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

 时间:2026-02-14 08:03:26

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、简介中提到:实数信号的功率谱包含正负频率成分,但上述功率谱的横坐标却并非如此。这里,实际上需要用到fftshift命令进行变换,可以直接复制下面的命令:

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画实数信号的功率谱?

1、总结一下步骤,画实数信号功率谱的整个过程大致分为5步:

1、用EXCEL生成离散的实数信号;

2、在MATLAB中调取所生成的信号;

3、对信号作傅里叶变换,并求功率;

4、绘出初步的功率谱;

5、用fftshift命令进行变换得到最终的功率谱。

  • 如何用MATLAB读取.mat文件
  • matlab线型和颜色设置
  • 如何修改matlab绘图中线条的粗细
  • matlab如何同时画多个图
  • 怎么在simulink原理图中添加注释
  • 热门搜索
    熹妃传攻略 要字怎么读 江苏省旅游 吃什么可以美白皮肤 刷机精灵怎么刷机 乌镇旅游 躲藏用英语怎么说 怎么挤胸 棋盘山风景区 一路向西在哪里可以看