[푸리에급수] Ideal 구형파를 Ideal LPF에 통과시켰을때 그 출력파형을 Java애플릿으로 관찰
*현*
다운로드
장바구니
소개글
[자료설명]------------------------------------------------------본 자료는 통신이론 과목과 밀접한 연관이 있습니다.
기본적으로 푸리에급수 전개(Fourier series)의 개념을 이해를 바탕으로 하는 주제 입니다.
-Ideal한 구형파를 LPF에 통과 시켰을때- 를 전제로 하여 그 결과를 그래프로 화면상에 출력합니다.
Ideal한 LPF의 Cutoff주파수에 따라서 3가지의 다른 그래프를 보여줍니다.
자바 애플릿을 실행하여, 출력 그래프는 윈도우 Explorer 또는 크롬 브라우저에서 볼 수 있습니다.
푸리에 급수를 활용한 결과식을 Java코드로 표현하였으며 그 수학적 결과 코드는 아래 한줄로 표현 됩니다.
Yt += (2.0*Math.pow(-1,(k-1)/2)) / ((double)k * Math.PI) * Math.cos(k*W0*sec);
본 소스코드에서 몇몇 변수값을 바꾸게 되면 다른 결과 그래프를 볼 수 있습니다.
예를들어 LPF의 Cutoff 값은
startCutOff = 20;
endCutOff =80;
부분에서 변경 할 수 있습니다.
[파일설명]------------------------------------------------------
첨부된 압축파일은 3개의 파일로 구성됩니다.
1. fs_outwave.java ; 소스코드
2. fs_outwave.class ; java파일의 컴파일 결과
3. RunMe.html ; java애플릿을 구동하기윈한 html 파일 <- 이 파일을 브라우저로 실행하면 그래프가 나옵니다
*주1 : Source 코드의 수정없이 단순 실행을 위해서는 JRE 를 설치해야 합니다.
만약 화면이 나오지 않는다면, JAVA 홈페이지에서 최신의 JRE를 다운로드 및 설치 해야 합니다.
*주2 : 사용자가 Source코드 수정을 통해 Cutoff주파수등 설정값을 바꾸고
다른 주파수값으로 실행하고자 한다면, 먼저 수정된 소스코드에 대하여 java 컴파일 과정을 거쳐야 합니다.
이를 위해서는 JDK(Java Development Kit) 설치 과정이 필요합니다.
*주3 : 다음과 같은 버전의 JAVA가 설치된 PC에서 테스트 되었습니다.
1) WinXP, JDK 5.0 Update 13
2) Windows 7, JRE 7.0
*주4 : 만약 보안 설정등의 오류가 발생하여 그래프가 나타나지 않는다면 아래와 같이 보안설정을 변경해야 합니다.
1) [제어판]에서 JAVA 선택
2) Java 제어판창에서 [보안]탭 클릭
3) 보안레벨을 [중간]으로 선택, [확인]클릭.
(* PC 보안을 위하여, 추후 원래 설정으로 복원하는 것을 추천합니다)
컴파일 실행환경
컴파일환경 : JDK 설치 , 실행환경 : JRE 설치 및 JAVA 보안설정본문내용
:: 퓨리에 급수 전개 ::Ideal 구형파(스퀘어 펄스)가 Ideal Low Pass Filter 를 통과하였을때의 출력 파형을 그린다
이상적인 구형파는 무한대의 주파수 성분을 가지고 있다.
이러한 구형파가 이상적인 LPF통과시 고주파는 Ideal하게 차단되며
따라서 LPF의 Cutoff-frequency 내에 포함되는 저주파 성분들만 출력파를 형성한다.
LPF의 Cutoff-frequency가 `높은` 경우는 거의 구형파와 비슷한 파형이 출력될것이며
LPF의 Cutoff-frequency가 `낮은` 경우는 일반 정현파(COS)와 유사한 파형이 출력될것이다.
LPF의 Cutoff-frequency를 조정하기 위해서
아래 프로그램에서
52 번째 Line
startCutOff = 20;
endCutOff =80;
91 번째 Line
if( cutOff == 20 || cutOff ==40 || cutOff == 80)
의 값을 바꾸면 된다.
...중략...
import java.awt.*;
import java.applet.*;
public class fs_outwave extends Applet
{
public void paint(Graphics g)
{
double Yt, DC, F0, W0; // FOR INPUT SIGNAL
int startCutOff, endCutOff; // FOR CUTOFF FREQ
int dx, osx, osy, bottomMarginOfWave; // FOR DISPLAY
String infoSignal;
...중략...
// DRAW THE Y(t) !!! , T0 of the input wave = 0.5 sec , Run to 1sec
for(double sec = 0.0 ; sec <= 1.0 ; sec += 0.00125)
{
Yt = DC;
for(int k = 1 ; k <= cutOff/2 ; k = k + 2)
{
Yt += (2.0*Math.pow(-1,(k-1)/2)) / ((double)k * Math.PI) * Math.cos(k*W0*sec);
}
// Draw ONE PIXEL ; Y(t) * 100 (Scale value)
g.drawLine(osx+dx,osy - (int)(Yt*100),osx+dx,osy - (int)(Yt*100) );
dx++;
}
압축파일 내 파일목록
fs_outwave.class
fs_outwave.java
RunMe.html
fs_outwave.java
RunMe.html