怎么用MATLAB画实数信号的功率谱

2025-03-18 06:03:00

分析信号的时候需要用到信号的功率谱,而MATLAB是信号处理利器,本篇经验和大家分享怎么用MATLAB画实数信号的功率谱。复数信号的功率谱画法正在研究中,后期有时间我再作相关分享。实数信号的功率谱包含正负频率成分,复数信号的功率谱则不然,通过两者对比,可以帮助我们理解复数信号的优势所在。

怎么用MATLAB画实数信号的功率谱

工具/原料

MATLAB,版本R2016b或9.1.0.441655,64位

WINDOWS 7操作系统,64位

EXCEL 2013,64位

实数信号的功率谱画法

1、首先,生成一个离散的实数信号。这里以x=2*cos(3*pi*t)信号为例,借助EXCEL将其离散化。采样率fs取50,采样点数N取100。

怎么用MATLAB画实数信号的功率谱

2、然后,在MATLAB中调取我们刚刚所生成的离散实数信号。我把包含该信号的EXCEL文件命名为signal_x_data,并放在了C盘根目录下,如果你采用和我同样的设置,调取时可以直接复制下面的命令:x=xlsread('C:\signal_x_data.xlsx'); % 加载xlsx文件x=x(:,3); % 取位于第三列的信号数据

怎么用MATLAB画实数信号的功率谱

3、接着,我们对该实数信号作傅里叶变换,再取所得筐毙险裆变换结果的绝对值的平方。这一步除了可以采用命令:xfft=fft(x)稆糨孝汶;P=abs(xfft).*abs(xfft);也可以采用命令:xfft=fft(x);P=(xfft).*conj(xfft);可以看到,两种算法的结果是一致的(误差极小,例如在1e-12以内,即可认为结果一致)。我们所求得的P转化为分贝后即为功率谱中各点的纵坐标值。

怎么用MATLAB画实数信号的功率谱

4、于是,我们可以作出实数信号的功率谱。横坐标为频率f=0:1*fs/N:fs-1*fs/N,可以锂淅铄旰直接复制下面的命令:fs=50;N=100;熠硒勘唏f=0:1*fs/N:fs-1*fs/N;figure(1);subplot(1,2,1);plot(1/fs:1/fs:N/fs,x);xlabel('Time/s');ylable('Amplitude');title('时域信号');subplot(1,2,2);plot(f,20*log10(P));xlabel('Frequency/Hz');ylabel('Power/dB');title('功率谱');左边图反映信号时域变化,右边图为信号的功率谱。

怎么用MATLAB画实数信号的功率谱

5、简介中提到:实数信号的功率谱包含正负频率成分,但上述功率谱的横坐标娱镰涸徘却并非如此。这里,实际上需要用到ffts茑霁酌绡hift命令进行变换,可以直接复制下面的命令:figure(2);f=floor(-N/2)/N*fs:1*fs/N:(ceil(N/2)-1)/N*fs;plot(f,20*log10(fftshift(P)));这便是最终的功率谱,它包含了-1.5Hz和+1.5Hz这两个主要的频率成分。

怎么用MATLAB画实数信号的功率谱
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢