编程中出现越界问题
您 好:我分步输入如下程序后,出现两处错误,请帮我看看!谢谢!n=2048;
=wavread('d:\t.wav');
=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))); %请问这句错哪了呢?应该怎样改?输入后提示 ??? Index exceeds matrix dimensions.
title('原始语音信号FFT频谱');
subplot(2,1,2);
plot(f,abs(y1(1:1024)));% 这句也错了,请问这句错哪了呢?应该怎样改? 输入后提示 ??? Index exceeds matrix dimensions
title('原始语音信号频谱')
xlabel('Hz');
ylabel('幅值');
[ 本帖最后由 eight 于 2007-7-5 15:06 编辑 ] 在ploy之前使用size(y1),察看y1的维数,就知道问题出在哪里了。 同意楼上
在做fft变换后y1的位数肯定不到1024
回复 #2 w89986581 的帖子
我试了一下,是,可是调整1024的数值,还是不行呀? 你还是现检查下读入数据 x1的size的吧 正如stephenhope所说的,顺藤摸瓜查看生成y1的命令中变量的维数,一级一级的查找,有时最简单的错误最不容发觉. 原帖由 weipeng 于 2007-7-4 13:38 发表 http://www.chinavib.com/forum/images/common/back.gif您 好:我分步输入如下程序后,出现两处错误,请帮我看看!谢谢!
n=2048;
=wavread('d:\t.wav');
=size(x1);
y1=fft(x1,n);
y1 = fftshift(y1);
f=fs*(0:1024)/2048; ...
越界问题看这个:常见的程序出错问题整理 这是一个很明显的问题
已开始的时候你赋值n=2048;但是后来又有下面这个语句=size(x1);这个语句使得n变成了1,所以显然就出现了越界的问题
[ 本帖最后由 eight 于 2007-7-9 21:27 编辑 ]
页:
[1]