处理索引越界错误的最佳方法

时间:2014-02-27 15:13:06

标签: matlab indexing

我已生成时间信号并计算其零上升交叉点。现在我想计算两个连续零上升的周期。我最好的选择是使用带索引的循环。然而,我在边界处遇到“索引越界”错误。

这是我的代码:

t = 0:0.1:20;       % time
A = 3;              % Amplitude
x = A*sin(t);       % Signal

find_zero = diff(sign(x));
indx_up = find(find_zero>0);       % find all upward going zero crossing index values

time = t(indx_up);                 % time values for zero crossings

for ii = 1:length(time)
    period(ii) = time(ii+1)-time(ii);
end

我收到的错误:Attempted to access time(5); index out of bounds because numel(time)=4

有办法吗?

2 个答案:

答案 0 :(得分:3)

我想你想要

for ii = 1:length(time)-1

但你不能用period = diff(time)替换整个循环吗?

答案 1 :(得分:2)

问题是,当time(ii+1)从1变为ii时,您正在访问length(time)。如果将for循环更改为

,问题将得到解决
for ii = 1:length(time)-1