填充阵列的对角元素MATLAB

u3r8eeie  于 2023-10-23  发布在  Matlab
关注(0)|答案(1)|浏览(183)

我有下面的矩阵C,我想在MATLAB中重建:

在这种情况下,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()来执行此操作吗?

c7rzv4ha

c7rzv4ha1#

如果你愿意,你可以在一个表达式中完成这一点,只需在相邻元素之和的向量上使用diag,就像这样:

>> C = diag(c(1:end-1) + c(2:end))
C =
    36     0     0
     0    22     0
     0     0    22

相关问题