我有一个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/
非常感谢帮助,提前谢谢!
答案 0 :(得分:0)
这里的问题是你的第一个地块是在范围1:length(q)
上绘制的,而第二个地块是在范围0 : 1/fs : (length(wave)-1)/fs
上绘制的
假设您的值q
和wave1
长度相同(看起来可能是这样),请尝试:
figure; hold all;
plot(z, q);
plot(z, wave1);
然后,您可以根据自己的喜好调整每个绘图命令的线属性。
如果q
和wave1
长度不完全相同,那么快速而肮脏的修复方法就是:
figure; hold all;
plot(1:length(q), q);
plot(1:length(wave1), wave1);
这可能不会给你完全你想要的东西,但它应该朝着正确的方向迈出一步。