【问题标题】:Scaling the plot in matlab在matlab中缩放绘图
【发布时间】:2013-04-28 21:00:58
【问题描述】:

我有一个 wav 文件,我将它导入 matlab,并使用以下函数从采样数据中恢复原始信号:

sub1=wavread('jamming.wav');
 magnSub1=abs(fft(sub1));
 phaseSub1=angle(fft(sub1));
 sub1_L=magnSub1.*exp(i*phaseSub1);
 sub1_L=ifft(sub1_L);
 q=(2^15-1)*(abs(sub1_L).*cos(angle(sub1_L)));
 plot(q);
 axis([44000,45000,-2^15+1,+2^15-1]);

但现在我想在现有图表上添加一些散点图来比较采样数据和连续波。 这是我目前所拥有的:

[wave,fs]=wavread('jamming.wav'); 

sound(wave,fs);

t=0:1/fs:(length(wave)-1)/fs;
z = t([1],:);
wave1=wave(:,[1]);
scatter(z,wave1);

问题是我无法将 x 轴缩放到第一张图。有人可以帮我解决这个问题吗?我的最终图表应该与此页面中的相同:http://www.cheers4all.com/2012/07/analog-to-digital-convertor-matlab-source-code/

非常感谢您的帮助,在此先感谢您!

【问题讨论】:

  • 您确定您不是在寻找stem 情节吗?这似乎用于在您提供的链接上生成图表。此外,当您第一次绘制数据时,您不会使用 x 向量进行绘图 - 您如何期望这与第二种情况相匹配,即 x 轴有一个向量 t
  • @wakjah 我试图在第一张图中添加时间,但如果我在第二张图中使用 t,它一直说 t 和 q 应该是相同的大小。

标签: matlab plot


【解决方案1】:

这里的问题是你的第一个图是在1:length(q) 范围内绘制的,而第二个图是在0 : 1/fs : (length(wave)-1)/fs 范围内绘制的

假设您的值 qwave1 的长度相同(看起来可能是),请尝试:

figure; hold all;
plot(z, q);
plot(z, wave1);

然后您可以根据自己的喜好调整每个绘图命令的线条属性。

如果 qwave1 的长度不完全相同,那么快速而肮脏的解决方法是:

figure; hold all;
plot(1:length(q), q);
plot(1:length(wave1), wave1);

这可能无法准确地为您提供您正在寻找的东西,但它应该是朝着正确方向迈出的一步。

【讨论】:

    猜你喜欢
    • 2011-12-16
    • 1970-01-01
    • 2013-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-13
    • 2014-10-05
    • 2020-05-20
    相关资源
    最近更新 更多