我在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的第二列差异,以此类推... 为了容纳所需的行值,我使用了“步长”变量,在计算第一列时将其设置为零,然后当计算第二列时,我希望它增加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作为输入元素? - Divakar