我想在 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()
来执行此操作吗?
如果您愿意,您可以在单个表达式中简单地通过在相邻元素之和的向量上使用
diag
来完成此操作,如下所示:
>> C = diag(c(1:end-1) + c(2:end))
C =
36 0 0
0 22 0
0 0 22