由于上学期进行了信号与系统课程的学习,楼主“被迫”地参与了相关课程设计的制作,由于课程设计采取了全理论数学的形式,老师要求学生们最后分别做出离散型与连续性信号的傅里叶变换模型,并能够根据参数的不同进行相关信号图像的修改与改进,萌新采用了MATLAB模拟软件进行数字与图像的模拟与处理并最终输出了相关散点图形。
相关函数的程序端口设计如下:
clc,clear
%离散时间系统下的傅里叶变换与逆变换
N=200; %采用的数据点数
dt=4/N; %采样的间隔
for n=1:N %生成一个方波
if (n*dt<=1)
x(n)=-1;
else
if(n*dt<=2)
x(n)=1;
else
if(n*dt<=3)
x(n)=-1;
else
x(n)=1;
end
end
end
end
figure
subplot(2,1,1)
plot((1:N)*dt,x)
hold on
plot((1:N)*dt,zeros(1,N),'k');
xlabel('时间/s')
ylabel('方波信号');
title('原始信号');
grid on
%下面开始计算傅里叶变换系数
a=zeros(1,N);
b=a;
c=b;
nn=floor(N/2)+1; %向小取整
for k=0:nn-1
a(k+1)=0;
b(k+1)=0;
for ii=0:N-1
a(k+1)=a(k+1)+2/N*x(ii+1)*cos(2*pi*k*ii/N); %求解Fourier系数
b(k+1)=b(k+1)+2/N*x(ii+1)*sin(2*pi*k*ii/N); %"连续"时间信号下的傅里叶系数求解
end
c(k+1)=sqrt(a(k+1).^2+b(k+1).^2);
end
%create the stem formular
%stem(x,y,'filled')
subplot(2,1,2)
freq=(0:nn-1)/(N*dt);
plot(freq,c(1:length(freq)));
title('Fourier变换');
xlabel('频率/Hz')
ylabel('振幅');