【发布时间】:2014-09-02 20:18:06
【问题描述】:
如果我有一个名为 data 的任意 n*m 矩阵,我想使用逐渐增大的步长来获取矩阵的差异。
第一种情况的第一列等于data(:,2)-data(:,1),下一列是data(:,3)-data(:,2),依此类推。这可以通过以下函数来完成。
data = diff(data,1,2)
同样,我还想根据每隔一列计算差异,以便第一个条目是 data(:,3)-data(:,1),下一个是 data(:,5)-data(:,3),依此类推。
这不能用 diff 来完成,但是有没有其他函数或方法可以在不诉诸循环的情况下做到这一点?
我需要对每个不超过 50 的 n 值做同样的事情。
【问题讨论】:
-
偶数列会发生什么?它们是在输出中留下还是被删除?输出 w.r.t 的大小是多少?
n和m?如果连 num cols 都没有留下,那么只需使用data(:,[2:2:end]=[]删除它们,然后使用您的diff。 -
总的来说,只要 n (步长是偶数),它们仍然会被使用,但我想我可以这样做作为一种解决方法。不过,prolly 仍然会让我循环播放。
标签: matlab