diag(M) = c(1,2,3)
说我有一个矩阵M 3 * 3,然后我想为其诊断元素赋值,但是上面的命令行不起作用?
错误说下标索引必须是正整数或逻辑。
答案 0 :(得分:1)
您可以使用线性索引,例如,如果M
是3x3:
M(1:(size(M,1)+1):end)=[10 20 30]
答案 1 :(得分:1)
您可以这样使用diag
-
%%// Given matrix M
M = randi(10,3,3)
%%// Assign the diagonal elements as 1,2,3
M(diag(ones(size(M,1),1),0)>0) = 1:3
输出 -
M =
3 1 2
3 5 8
6 2 3
M =
1 1 2
3 2 8
6 2 3
答案 2 :(得分:0)
您可以使用单位矩阵:
>> M = rand(3)
M =
0.3922 0.7060 0.0462
0.6555 0.0318 0.0971
0.1712 0.2769 0.8235
>> M(eye(size(M)) == 1) = [1 2 3]
M =
1.0000 0.7060 0.0462
0.6555 2.0000 0.0971
0.1712 0.2769 3.0000