首页 > 解决方案 > 找出向量元素之间的差异

问题描述

我在matlab中有一个长度为200 x1的随机向量

x= rand(200,1)

我想写一行代码找出x的每3个元素之间的差异,即x(4)-x(1)然后x(5)-x(2)然后x(6)-x( 3)。

for i=1:length(x)-3
diff= x(i+3)- x(i)
end

这行得通吗?谢谢你

标签: matlab

解决方案


首先,不要diff用作变量名,因为它是您正在隐藏的内置函数。

你很接近,但你反复覆盖输出,你需要在循环期间将它存储在一个数组中

delta = NaN(size(x)); % preallocate the output for better memory management
for ii = 1:length(x)-3
    delta(ii) = x(ii+3) - x(ii) % assign to output array
end

您可以在 MATLAB 中使用数组操作更简洁地做到这一点,特别是

delta = x(4:end) - x(1:end-3);

推荐阅读