CAFE

MATLAB Q&A

Fourier Series의 계수 구하기.. 적분 함수 안 쓰고 푼 거..

작성자palesun|작성시간04.10.08|조회수2,681 목록 댓글 0

 

맞는지 확인 좀 해주시면 안 될는지... for loop 사용했습니다. 

 

수학식은 다음과 같이 근사시켰습니다. 그 수학 정석에 나오는 구분구적법인가 뭐시긴가..

 

 

 

y=[

        % y값들은 너무 많아서 생략..

];

T=0.75;                 % 주기

n=200;                  % 자료의 총 개수

dt=0.75/200;            % 미소 시간 단위를 계산

t=0:dt:0.75-dt;


% 수치적분을 사용하여 계수의 값들을 구하도록 합니다.

% a0의 계수를 구하는 부분 %

temp = 0;

for j = 1:200

    temp = temp + y(j) * (dt);

end

a0 = temp / T;


% an의 계수 20 개를 구하는 부분 %

for i = 1:20

    an(i) = 0;

    for j = 1:200

        tt = (j-1) * dt;

        an(i) = an(i) + y(j) * cos(i * 2 * pi / T * (tt)) * dt;

    end

    an(i) = an(i) * 2 / T;

end


% bn의 계수 20 개를 구하는 부분 %

for i = 1:20

    bn(i) = 0;

    for j = 1:200

        tt = (j-1) * dt;

        bn(i) = bn(i) + y(j) * sin(i * 2 * pi / T * (tt)) * dt;

    end

    bn(i) = bn(i) * 2 / T;

end




% 구해진 계수를 바탕으로 본 함수를 재구성해보는 부분 %

ft=a0;

for i=1:10

ft=ft+an(i)*cos(2*pi*i/T*t)+bn(i)*sin(2*pi*i/T*t);

end


% 재구성된 함수 그려보기 %

plot(t,ft)

hold


% 원함수 그려보기 %

plot(t',y,'r')

hold

 

이건 an, bn 계수를 각각 5개씩만 구했을 때요..

 

 

이건 an, bn 각각 20개 구했을 때입니다.

 

계수를 1개씩 밀려서 구한 건 아닌가 싶어 헷갈리네요.

 

아.. 원래 주어진 200개의 y값들은 혈압에 대한 데이터인가 그렇다고 하더라구요.

 

 

다음검색
현재 게시글 추가 기능 열기

댓글

댓글 리스트
맨위로

카페 검색

카페 검색어 입력폼