weipeng 发表于 2007-7-4 13:38

编程中出现越界问题

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

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 编辑 ]

w89986581 发表于 2007-7-4 14:34

在ploy之前使用size(y1),察看y1的维数,就知道问题出在哪里了。

appleseed05 发表于 2007-7-4 15:20

同意楼上
在做fft变换后y1的位数肯定不到1024

weipeng 发表于 2007-7-4 20:55

回复 #2 w89986581 的帖子

我试了一下,是,可是调整1024的数值,还是不行呀?

stephenhope 发表于 2007-7-4 21:09

你还是现检查下读入数据 x1的size的吧

w89986581 发表于 2007-7-4 21:23

正如stephenhope所说的,顺藤摸瓜查看生成y1的命令中变量的维数,一级一级的查找,有时最简单的错误最不容发觉.

eight 发表于 2007-7-5 15:06

原帖由 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; ...


越界问题看这个:常见的程序出错问题整理

happy 发表于 2007-7-6 16:53

这是一个很明显的问题
已开始的时候你赋值n=2048;但是后来又有下面这个语句=size(x1);这个语句使得n变成了1,所以显然就出现了越界的问题

[ 本帖最后由 eight 于 2007-7-9 21:27 编辑 ]
页: [1]
查看完整版本: 编程中出现越界问题