在matlab中为矩阵的对角线赋值

时间:2014-04-21 02:54:44

标签: matlab

diag(M) = c(1,2,3)

说我有一个矩阵M 3 * 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