我已生成时间信号并计算其零上升交叉点。现在我想计算两个连续零上升的周期。我最好的选择是使用带索引的循环。然而,我在边界处遇到“索引越界”错误。
这是我的代码:
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
。
有办法吗?
答案 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