回 帖 发 新 帖 刷新版面

主题:[讨论]plot出错,请指教

编程中出现问题?


您 好:我分步输入如下程序后,出现两处错误,请帮我看看!谢谢!

n=2048;
[x1,fs,NBITS]=wavread('d:\t.wav'); 
[m,n]=size(x1);
y1=fft(x1,n);           
y1 = fftshift(y1); 
f=fs*(0:1024)/2048;
figure(1)
plot(linspace(0,m/fs,m),x1);  
title('原始语音信号');
xlabel('时间');
ylabel('幅值');
grid on
figure(2)
subplot(2,1,1);
plot(abs(y1(1:1024)));       [color=FF0000]%请问这句错哪了呢?应该怎样改?输入后提示  ??? Index exceeds matrix dimensions.[/color]title('原始语音信号FFT频谱');
subplot(2,1,2);
plot(f,abs(y1(1:1024)));%  这句也错了,请问这句错哪了呢?应该怎样改?  输入后提示  ??? Index exceeds matrix dimensions
title('原始语音信号频谱')
xlabel('Hz');
ylabel('幅值');

回复列表 (共2个回复)

沙发


plot(abs(y1(1:1024)));       %请问这句错哪了呢?应该怎样改?输入后提示  ??? Index exceeds matrix dimensions.title('原始语音信号FFT频谱');

错误提示含义:Index exceeds matrix dimensions,下标超出矩阵维数

建议你查一下矩阵y1的维数,用size(y1,1) 1是第一维,如果是2就是第2维,以此类推。

你还可以试着这样改程序,直接取得矩阵y1的维数,假设为n,然后把你的那个命令改成

plot(abs(y1(1:n)));
一般不会出错。
以上观点未经验证,仅供参考。

板凳

N=2048;
[x1,fs,NBITS]=wavread('d:\t.wav'); 
[m,n]=size(x1);
y1=fft(x1,N);           
%y1 = fftshift(y1); 
f=fs*(1:1024)/2048;
figure(1)
plot(linspace(0,m/fs,m),x1);  
title('原始语音信号');
xlabel('时间');
ylabel('幅值');
grid on
figure(2)
subplot(2,1,1);
plot(abs(y1(1:1024)));     
subplot(2,1,2);
plot(f,abs(y1(1:1024)));
title('原始语音信号频谱')
xlabel('Hz');
ylabel('幅值');

我来回复

您尚未登录,请登录后再回复。点此登录或注册