声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1700|回复: 7

[编程技巧] 编程中出现越界问题

[复制链接]
发表于 2007-7-4 13:38 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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

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)));       %请问这句错哪了呢?应该怎样改?输入后提示  ??? 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 编辑 ]
回复
分享到:

使用道具 举报

发表于 2007-7-4 14:34 | 显示全部楼层
在ploy之前使用size(y1),察看y1的维数,就知道问题出在哪里了。
发表于 2007-7-4 15:20 | 显示全部楼层
同意楼上
在做fft变换后y1的位数肯定不到1024
 楼主| 发表于 2007-7-4 20:55 | 显示全部楼层

回复 #2 w89986581 的帖子

我试了一下,是[1 1],可是调整1024的数值,还是不行呀?
发表于 2007-7-4 21:09 | 显示全部楼层
你还是现检查下读入数据 x1的size的吧
发表于 2007-7-4 21:23 | 显示全部楼层
正如stephenhope所说的,顺藤摸瓜查看生成y1的命令中变量的维数,一级一级的查找,有时最简单的错误最不容发觉.
发表于 2007-7-5 15:06 | 显示全部楼层
原帖由 weipeng 于 2007-7-4 13:38 发表
您 好:我分步输入如下程序后,出现两处错误,请帮我看看!谢谢!

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; ...



越界问题看这个:常见的程序出错问题整理
发表于 2007-7-6 16:53 | 显示全部楼层
这是一个很明显的问题
已开始的时候你赋值
  1. n=2048;
复制代码
但是后来又有下面这个语句
  1. [m,n]=size(x1);
复制代码
这个语句使得n变成了1,所以显然就出现了越界的问题

[ 本帖最后由 eight 于 2007-7-9 21:27 编辑 ]

评分

1

查看全部评分

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-18 22:24 , Processed in 0.055032 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表