【发布时间】:2015-04-16 23:54:25
【问题描述】:
我在 MATLAB 中有一个列向量,我正在尝试构建一个差异矩阵,该矩阵具有逐行变化的差异大小。
很难用语言来解释,所以我举个例子来说明:
假设我的数据是:
data = [ 1 2 3 4 5 6 ];
我想要做的是制作一个矩阵来获取差异(每列差异大小变化[增加一个]):
diff =
[(2 - 1) ...
(3 - 2) (3 - 1) ...
(4 - 3) (4 - 2) (4 - 1) ...
(5 - 4) (5 - 3) (5 - 2) (5 - 1) ...
(6 - 5) (6 - 4) (6 - 3) (6- 2) (6 - 1)]
我最好的猜测是用嵌套循环制作一个三角形矩阵。我的 MATLAB 代码如下所示:
differences = zeros(length(data) - 1, length(data) - 1);
step = 0;
for j = 1:1:size(data) - 1;
for i = 1:size(logquarterly) - 1 - step;
if j <= i;
differences(i,j) = data(i + 1 + step , 1) - data(i,1);
step = step + 1;
end
end
end
我要做的是计算距离为 1 的第一列差异,然后计算距离为 2 的第二列差异,依此类推...为了适应我需要的必要行值,我使用“ step”变量,它设置为零用于计算第一列,然后我希望它在计算第 2 列时增加 1 以获得正确的尺寸。但我不能让它工作。如果我采取“步骤”并使用它:
differences = zeros(length(data) - 1, length(data) - 1);
for j = 1:1:size(data) - 1;
for i = 1:size(logquarterly) - 1;
if j <= i;
differences(i,j) = data(i + 1 , 1) - data(i,1);
end
end
end
一切正常,但每一列的差异距离相同,并且不会增加一。有什么想法吗?
【问题讨论】:
-
logquarterly到底是什么?为什么不写下给定样本输入的最终预期值?如果预期的输出是一个二维数组,并且似乎会有空格,那么这些空格的填充符应该是什么?也许使用随机的东西而不是 1,2,3,4,5,6 作为输入元素?