【发布时间】:2013-09-21 06:56:12
【问题描述】:
有人可以帮帮我吗?
我有一个 4x5x3 矩阵和 2x1 列。
matrix = ones(4,5,3);
column = ones(2,1);
matrix(1,1,1) = 2;
column(2,1) = 34;
当我使用列替换矩阵中的值时,一切都按预期工作:
column(matrix)
ans(:,:,1) =
34 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
ans(:,:,2) =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
ans(:,:,3) =
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
1 1 1 1 1
最后我有相同的矩阵,但有替换值。
但是,当我这样做时:
matrix = ones(4,5,3);
column = ones(2,2);
matrix(1,1,1) = 2;
column(2,2) = 34;
column(matrix, 2)
ans =
34
1
1
1
1
1
1
1
1
1
1
1
...
结果不保留原始矩阵的结构。我希望结果与上一个示例中的结果相同,但我想使用第二列进行替换。最好的方法是什么?
【问题讨论】:
-
您可以使用
reshape使结果恢复原状。 -
@s.bandara,谢谢!什么方案更有效率:1)使用reshape 2)复制第二列
column_2 = column(:,2); column_2(matrix) -
我不知道。如果它对你真的很重要,你应该尝试分析它。 MATLAB 在这些方面可能令人惊讶。
-
@s.bandara,好的,我去看看。