Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
 
 
主题工具 显示模式
旧 2008-05-05, 15:33   #1
zdJack0305
初级会员
 
注册日期: 2008-05-05
年龄: 38
帖子: 2
声望力: 0
zdJack0305 正向着好的方向发展
箭头 [资料]周期信号的傅里叶级数实验代码!!!

下面是上数据通讯的时候老师给的代码,到现在还不怎么懂 大家研究一下:
周期信号的傅里叶级数
周期信号定义: ,k为整数,T为信号的周期
傅里叶级数展开:
其中,T为周期信号的最小周期, , 为傅里叶展开系数,它的物理意义为频率分量 的幅度和相位。
例子:设周期信号的一个周期波形为 ,该周期信号的傅里叶级数展开解析式为:

采用Matalab程序画出了取2N+1项近似式的波形(N=100)
程序实例:fb_jinshi.m
代码如下:
%周期信号(方波)的展开
close all;
close all;
N=100;%取展开式的项数为2N+1项

T=1;
fs=1/T;
N_sample=128;%为了画出波形,设置每个周期的采样点数
dt=T/N_sample;

t=0:dt:10*T-dt;%画出10个周期的信号
n=-N:N;%展开式的取值范围
Fn=sinc(n/2).*exp(-j*n*pi/2);%傅里叶级数展开的解析(求Fn)
Fn(N+1)=0;%超出范围的取0
ft=zeros(1,length(t));%length()为获得序列长度,取全1序列
for m=-N:N
ft=ft+Fn(m+N+1)*exp(j*2*pi*m*fs*t);%傅里叶级数展开
end
plot(t,ft)


编写脚本文件:计算信号的频谱并与信号的真实频谱的抽样比较
程序实例:fb_spec.m(利用T2F.m函数调用)
fb_spec.m代码:
%方波的傅里叶变换
clear all;
close all;
T=1;
N_sample=128;%设置每个周期的采样点数
dt=T/N_sample;%采样点的时间

t=0:dt:T-dt;%一个周期
st=[ones(1,N_sample/2),-ones(1,N_sample/2)];%方波一个周期
subplot(211);%绘制方波时域图
plot(t,st);
axis([0 1 -2 2]);%坐标轴的取值范围
xlabel('t');ylabel('S(t)');%图标识
subplot(212);%绘制频谱图
[f,sf]=T2F(t,st);%傅里叶变换
plot(f,abs(sf));hold on;%绘制方波频谱
axis([-10 10 0 1]);%坐标轴的取值范围
xlabel('f');ylabel('/S(f)/');%图标识

sff=T^2*j*pi*f*0.5.*exp(-j*2*pi*f*T).*sinc(f*T*0.5).*sinc(f*T*0.5);
%根据傅里叶变换得到的信号频谱相应位置的抽样值
plot(f,abs(sff),'r-')

T2F.m函数代码:
function[f,sf]=T2F(t,st)
%离散傅里叶变换
dt=t(2)-t(1);%求时间间隔
T=t(end);%周期
df=1/T;%求频率
N=length(st);%求项数

f=-N/2*df:df:N/2*df-df;%频率范围取值
sf=fft(st);%傅里叶变换
sf=T/N*fftshift(sf);%离散傅里叶变换
zdJack0305 当前离线   回复时引用此帖
 


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码


相似的主题
主题 主题作者 版面 回复 最后发表
求救解决com编译过程中问题!!! diagnosis MATLAB论坛 1 2008-06-12 09:46


所有时间均为北京时间。现在的时间是 03:19


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.