填充数组 MATLAB 的对角线元素

问题描述 投票:0回答:1

我想在 MATLAB 中重新创建以下矩阵 C:

在本例中,大写 C 是一个 N = 3 × N = 3 矩阵,但我想生成任意大小的 N × N 的 C。

我使用以下方法在 1 到 20 的区间内随机创建 c 的随机值:

N = 3
c =  randi([1,20],N+1,1,"double");

我最初认为我可以使用嵌套的 for 循环,如下所示:

function C = carray(c,N)
    C = zeros(N,N)
    for i =1:1:N
        for j=1:1:N
            if isdiag(C(i,j))
                C(i,j) = c(i) + c(i+1)
            end
        end
    end
end

然而,这并没有产生预期的结果。我必须使用

diag()
spdiag()
来执行此操作吗?

arrays algorithm matlab nested-loops diagonal
1个回答
0
投票

如果您愿意,您可以在单个表达式中简单地通过在相邻元素之和的向量上使用

diag
来完成此操作,如下所示:

>> C = diag(c(1:end-1) + c(2:end))
C =
    36     0     0
     0    22     0
     0     0    22
© www.soinside.com 2019 - 2024. All rights reserved.