试图改变矩阵中的列

6视图(30天)
贾斯汀诺兰
贾斯汀诺兰 2021年9月12日
评论道: 戴夫B 2021年9月12日
假设我有一个数组= (1 2 3 4;3 3 4 5;4 4 4 7],一个3×4矩阵。我想改变某一列指定行。所以让我想改变列1,3,2相应的行1,2,3。所有的列将改变我改变相应的行值10。所以我理想的答案,当打印新的矩阵应该[10 2 3 4;3 3 10 5;4 10 4 7]。我尝试不使用任何循环节省运行时间。 And I've tried doing something like this: array(1:3, [1,3,2]) = 10. But I got the result [10 10 10 4; 10 10 10 5; 10 10 10 7]. which is not the answer I want. Is it possible to do this without using any loops. Any help would be appreciated thanks!!

接受的答案

戴夫B
戴夫B 2021年9月12日
指定行和列使MATLAB矩形:一个(1:2,1:4)指的是1和2的行,列1到4,即MATLAB不需要双行/列但范围。
你可以指定他们的指数变化实证值。
有两种方法来索引值矩阵,可以由行和列或一个线性指数。(你不需要知道这个来解决你的问题,但是……)线性指数看起来像这样:
= (1 2 3 4;3 3 4 5;4 4 4 7];
重塑(1:元素个数(a)、大小(a))
ans = 3×4
1 4 7 10 2 5 8 11 3 6 9 12
有一个很好的MATLAB函数调用 sub2ind 行和列转换为线性指数会让你地址你想要改变的实证价值:
印第安纳州= sub2ind(大小(a)、(1 2 3) (1 2 3))
印第安纳州= 1×3
1 8 6
指数的手,很容易调整值:
(印第安纳州)= 10
一个= 3×4
10 2 3 4 3 3 10 5 4 10 4 7
2的评论
戴夫B
戴夫B 2021年9月12日
sub2ind使它容易,但你也可以做过类似:(cols-1) *高(a) +行
(我只提到这个是因为我经常做sub2ind-like或ind2sub-like计算当我在c++)

登录置评。

更多的答案(0)

下载188bet金宝搏


释放

R2021a

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!

翻译的