声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2441|回复: 4

[求助]一个周期函数如何进行Fourier

[复制链接]
发表于 2006-3-26 22:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
请教高手:<BR>一个周期函数如何进行Fourier级数变化:<BR>一个周期内的函数为:<BR><BR>f(t)=1,t&gt;1.1399<BR>f(t)=-1,1.1399=&lt;t&lt;1.2885<BR>f(t)=0,1.2885=&lt;t&lt;1.55<BR><BR>用matlab怎么表示这个函数。
回复
分享到:

使用道具 举报

发表于 2006-3-27 07:49 | 显示全部楼层

回复:(无水1324)[求助]一个周期函数如何进行Fourie...

参考下面的程序<BR><BR>运用 FFT 求取矩形脉冲的频谱<BR><BR>[cftbyfft.m]<BR>function [AW,f]=cftbyfft(wt,t,flag)<BR>%cftbyfft.m<BR>% 本程序采用 FFT 计算连续时间 Fourier 变换。输出幅频谱数据对 (f,AW) 。<BR>% 输入量 (wt,t) 为已经窗口化了的时间函数 wt(t) ,它们分别是长度为 N 的向量。<BR>% 对于 " 非平凡 " 取值时段有限的情况,应使该时段与窗口长度相比足够小。以<BR>% 提高频率分辨率。<BR>% 对于 " 非平凡 " 取值时段无限的情况,窗口长度的选取应使窗口外的函数值小<BR>% 到可忽略,以提高近似精度。<BR>% 输入宗量 flag 控制输出 CFT 的频率范围。<BR>% flag 取非 0 时(缺省使用),频率范围在 [0,fs );<BR>% flag 取 0 时,频率范围在 [-fs/2,fs/2) 。<BR>if nargin==2;flag=1; end<BR>N=length(t); % 采样点数,应为 2 的幂次,以求快速。<BR>T=t(length(t))-t(1); % 窗口长度<BR>dt=T/N; % 时间分辨率。<BR>W0=fft(wt); % 施行 FFT 变换 &lt;16&gt;<BR>W=dt*W0; % 算得 [0,fs) 上的 N 点 CFT 值<BR>df=1/T; % 频率分辨率<BR>n=0:1:(N-1);<BR>% 把以上计算结果改写到 [-fs/2,fs/2] 范围<BR>if flag==0<BR>n=-N/2:(N/2-1);<BR>W=fftshift(W); % 产生满足式( 5.13.3.1-6 )的频谱<BR>end<BR><BR>f=n*df; % 频率分度向量<BR>AW=abs(W); % 福频谱数据向量<BR>if nargout==0<BR>plot(f,AW);grid,xlabel( ' 频率 f' );ylabel( '|w(f)|' )<BR>end<BR><BR>运行以下指令,绘制时域波形和幅频谱<BR>M=5; % 做 2 的幂次用。本例把 M 设得较小,是为了观察混迭。 &lt;1&gt;<BR>tend=1; % 波形取非零值的时间长度。<BR>T=10; % 窗口化长度应足够大,以减小窗口化引起的泄露“旁瓣”效应。 &lt;3&gt;<BR>N=2^M; % 采样点数,取 2 的幂是为使 FFT 运算较快。<BR>dt=T/N; % 以上 T 、 N 的取值应使 N/T=fs 采样频率大于两倍时间波形带宽,以克服<BR>% 采样引起的频谱混迭。<BR>% 在本例中,据理论分析知 W(f=7.5)=Sa(7.5*pi)=1/(7.5*pi)&lt;5% 。<BR>% 因此,可近似认为本例时间信号带宽为 7.5Hz 。<BR>n=0:N-1; % 采样序列<BR>t=n*dt; % 采样点时间序列<BR>w=zeros(size(t,2),1);<BR>Tow=find((tend-t)&gt;0); % 产生非零波形时段的相应序列<BR>w(Tow,1)=ones(length(Tow),1); % 在窗口时段内定义的完整波形<BR>plot(t,w,'b','LineWidth',2.5),title('Time Waveform');xlabel('t --- &gt;') <BR><BR>[AW,f]=cftbyfft(w,t,0); <BR>ff=f+eps; % 为避免下面指令出现 0/0 而采取的措施<BR>AWW=abs(sin(pi*ff)./(pi*ff));<BR>plot(f,AW,'b-',ff,AWW,'r:')<BR>title('Aliasing caused by undersampling')<BR>xlabel('f --- &gt;');ylabel('|W(f)|'),legend('by FFT','Theoretical') <BR><BR><BR>如果采样频率太低会出现混迭现象<BR>
 楼主| 发表于 2006-3-27 09:58 | 显示全部楼层
<P>谢谢教授<BR><BR>但是这个很复杂了<BR><BR>在matlab里面表示这个函数的话,怎么表示?<BR><BR>谢谢</P>
发表于 2006-3-27 17:38 | 显示全部楼层

回复:(无水1324)[求助]一个周期函数如何进行Fourie...

<P>这个函数用符号好像表示不出来<br>写一个function吧,然后调用这个function形成序列</P>
[此贴子已经被作者于2006-3-27 17:39:24编辑过]

 楼主| 发表于 2006-3-30 21:51 | 显示全部楼层
<P>谢谢你的指导<BR>这几天都没有上来看<BR><BR>有点事情!<BR></P>
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-20 21:37 , Processed in 0.060284 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表