这个问题已经在这里有了答案:

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

说我有一个矩阵M 3 * 3,那么我想给其诊断元素赋值,但是上面的命令行为什么不起作用?

错误表明下标索引必须是实数正整数或逻辑值。

===============>>#1 票数:1

您可以只使用线性索引,例如,如果M为3x3:

 M(1:(size(M,1)+1):end)=[10 20 30]

===============>>#2 票数: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

===============>>#3 票数: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

  ask by user3495562 translate from so

未解决问题?本站智能推荐: