⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fourier.m

📁 信号实验常用的simulink模型和mfile,可直接在matlan下运行。
💻 M
字号:
%FOURIER Graphics demo of Fourier series expansion.

%   	Execute FOURIER to run it.



%	Copyright (c) 1984-94 by The MathWorks, Inc.



clf reset

echo on

clc

%       The Fourier series expansion for a square-wave is made up of a sum

%       of odd harmonics. We can show this graphically using MATLAB.



%	We start by forming a time vector running from 0 to 10 in steps 

%	of 0.1, and taking the sine of all the points:



t = 0:.1:10;

y = sin(t);



%	Let's plot this fundamental frequency.



plot(t,y), pause     % Press any key to continue.

clc

%	Now add the third harmonic to the fundamental, and plot it:



y = sin(t) + sin(3*t)/3;



plot(t,y), pause     % Press any key to continue.

clc



%	Now use the first, third, fifth, seventh, and ninth harmonics:



y = sin(t) + sin(3*t)/3 + sin(5*t)/5 + sin(7*t)/7 + sin(9*t)/9;



plot(t,y), pause     % Press any key to continue.

clc

%	For a finale, we will go from the fundamental to the 19th harmonic,

%	creating vectors of successively more harmonics, and saving all

%	intermediate steps as rows in a matrix.



t = 0:.02:3.14;

y = zeros(10,max(size(t)));

x = zeros(size(t));



for k=1:2:19

	x = x + sin(k*t)/k; 

	y((k+1)/2,:) = x;

end



%	Let's plot these successively on an overplot, showing the transition 

%	to a square wave.  Note that Gibbs' effect says that it will never 

%	really get there.



plot(y(1:2:9,:)'), title('The building of a square wave: Gibbs'' effect'), pause

clc

echo off

hh = gca;

ha = axes('pos',[0 0 1 1],'Visible','off');

axis([0 1 0 1]);

Nmax = 25;

tx(1) = text(.94,.7,'2','hor','right');

tx(2) = text(.94,.95,int2str(Nmax),'hor','right');

tx(3) = text(.94,.825,'Number of Terms:','horizontalalignment','right');

set(tx,'visible','off')

fig = gcf;

s = ['t=0:.02:3.14;x=zeros(size(t));' ...

	'global HC FSH;' ...

	'N = ceil(get(HC,''Value''));' ...

	'y = zeros(N,length(t));' ...

	'for k=1:2:(2*N-1);' ...

	'x = x+sin(k*t)/k; y((k+1)/2,:) = x;end,' ...

	'xd = 1:length(t); yd = (1:size(y,1))'';' ...

	'set(FSH,''xd'',xd,''yd'',yd,''zd'',y,''cd'',y),' ...

	'title([int2str(N) '' Terms'']);'];

global HC;

HC = uicontrol(fig,'Style','slider','Position',[0.95 0.70 0.03 0.25],...

	'Min',2,'Max',Nmax, 'Units', 'normalized', ...

	'Value',9,'CallBack',s,'visible','off');

set(fig,'currentaxes',hh);

echo on

%	Now plot this as a 3-d surface to show the transition to a square wave.



surf(y);

axis ij



%   	You can move the slider to change the number of terms in the series.



echo off

FSH = get(hh,'Children');

global FSH



P = pink(64);

colormap(flipud(P(17:64,:)));

title([int2str((k-1)/2) ' Terms'])



set(HC,'visible','on');

set(tx,'visible','on');

set(fig,'CurrentAxes',hh);

set(fig,'NextPlot','replace')

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -