matlab - 找出向量元素之间的差异
问题描述
我在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
这行得通吗?谢谢你
解决方案
首先,不要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);
推荐阅读
- python - Pandas:如何仅删除列末尾的最后一个连字符
- google-forms - 如何根据其他用户过去的回复使 Google 表单自动填充?
- c - 我知道一个地址,但我应该如何判断在哪个部分?使用C的全局区域或堆区域或堆栈区域
- json - 如何解决“手势 RangeError(索引)捕获的异常:无效值:有效值范围为空:0”
- c++ - 什么会使多边形算法中的点仅在正向和反向运行时才能正常工作?
- php - PHP:如何使用键->值对每两个分隔符将一个字符串分解为一个数组
- kubernetes - 将 GKE 集群拆除为“全新”状态而不删除它?
- scala - Spark——自定义reduce函数保存到磁盘然后上传到s3
- javascript - XMLHttpRequest 返回事件对象而不是实际数据
- fortran - Fortran 将未知大小的文件读入数组