MATLAB实现正弦频谱分析学习笔记

本次学习我打算完成的是频率为100HZ和频率为200HZ的正弦信号的作图以及频谱分析。
正弦信号的傅里叶变换是两个关于虚轴对称的冲击信号,我们此处选用MATLAB作图,进行计算时要将信号进行离散化然后再使用MATLAB自带的计算式进行计算。由于傅里叶变换的计算结果为虚数,我们会对其进行取绝对值处理,这样会方便作图。

对于正弦信号图像绘制的具体操作是:
1)时间轴离散化,采样点个数设置为N=512,则离散化的横坐标为n=0:N-1
2)正弦信号离散化,利用公式sin(2pi100*n/N)
3)进行作图

对于信号频谱图绘制的具体操作是:
1)利用fft函数对正弦信号做傅里叶变换计算
2)使用abs进行取绝对值,并用对应的公式进行幅值计算
3)计算作图横坐标范围,由奈奎斯特取样定理可知,只需要显示前N/2-1次谐波
4)进行作图

具体代码和分析如下:

N=512;%采样点个数
n=0:N-1;%时间轴离散化
si=sin(2*pi*100*n/N);%正弦信号离散化
f=fft(si);%傅里叶变换
subplot(2,2,1);plot(n,si);%关于n和f的作图,图像位置设置
xlabel('时间(s)');
ylabel('幅度(v)');title('时域信号波形');
Nyquist=N/2-1;%谐波次数设置
fn=abs(f)*2/N;%取绝对值,计算幅度
subplot(2,2,2);plot(n(1:Nyquist),fn(1:Nyquist));%频谱图绘制,由奈奎斯特取样定理可知只需要显示前N/2-1次谐波
xlabel('频率(hz)');
ylabel('功率(dbw)');title('信号频谱图');
N=512;
n=0:N-1;
si=sin(2*pi*200*n/N);
f=fft(si);
subplot(2,2,3);plot(n,si);
xlabel('时间(s)');
ylabel('幅度(v)');title('时域信号波形');
fn=abs(f)*2/N;
subplot(2,2,4);plot(n(1:Nyquist),fn(1:Nyquist));
xlabel('频率(hz)');
ylabel('功率(dbw)');title('信号频谱图');

得到的图像为:在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_33523925/article/details/86069593
今日推荐