优化下面的代码,使得生成的频谱图整合在一起for i=1:a figure; [f, P] = periodogram(modes(i,:), [], [], 1000); %计算信号的功率谱密度 plot(f, P); title(['IMF ' num2str(i) ' Spectrum']); xlabel('Frequency (Hz)'); ylabel('Power/Frequency (dB/Hz)');
时间: 2024-02-06 16:02:59 浏览: 54
Matlab_频谱分析
可以将所有的频谱图绘制在同一张图中,避免了每次循环都要打开一个新的figure窗口的问题。同时,可以将循环中的计算功率谱密度的过程独立出来,以提高代码可读性。修改后的代码如下:
```
figure;
for i=1:a
[f, P] = periodogram(modes(i,:), [], [], 1000); %计算信号的功率谱密度
plot(f, P);
hold on;
end
title('Spectra of IMFs');
xlabel('Frequency (Hz)');
ylabel('Power/Frequency (dB/Hz)');
legend('IMF 1', 'IMF 2', 'IMF 3', ...); % 根据需要设置legend
```
这样修改后,所有的频谱图将绘制在同一张图中,且图像会自动添加legend,方便用户查看。
阅读全文