Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 处理索引越界错误的最佳方法_Matlab_Indexing - Fatal编程技术网

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

Matlab 处理索引越界错误的最佳方法,matlab,indexing,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); %

我已经生成了一个时间信号并计算了它的零点上交点。现在我想计算两个连续的零向上交叉点的周期。我认为最好的选择是使用带有索引的循环。然而,我在边界处遇到了“索引超出边界”错误

这是我的密码:

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
我收到的错误:
试图访问时间(5);索引超出范围,因为numel(时间)=4

有办法解决吗?

我想你想要

for ii = 1:length(time)-1
但是你不能用
period=diff(time)
替换整个循环吗?

我想你想要

for ii = 1:length(time)-1

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

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

for ii = 1:length(time)-1

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

for ii = 1:length(time)-1

如果你想在代码中使用
时间(ii+1)
,你可以使用
for ii=1:length(time)-1
。如果你想在代码中使用
时间(ii+1)
,你可以使用
for ii=1:length(time)-1
。感谢所有的回复,而且@Dan你对第二个选项的选择是正确的!感谢所有的回复,第二个选项@Dan你是对的!