我想从Matlab中的矩阵中获取对角线 . 例如,给定以下矩阵
M = [1 1 4 5 4
2 5 1 2 2
4 1 2 1 3
1 3 1 1 1
1 2 3 3 1]
我想获得一个向上对角线的矢量列表: {[1 1 1 1], [4 2 3], [5 2] [4]}
.
一次尝试
我想在Matlab中用while循环替换if子句
if (i==j)
A(t+1,i) = M(i,j)
end
if (i==j+1)
A(t+1,i) = M(i,j)
end
...
if (i==j+N)
A(t+1,i) = M(i,j)
end
存储矩阵的所有对角线
t = 0;
while (t < 5) % if-clauses replaced here by this
for i=1:5
for j=i:5
if (i == j+t)
trend(t+1,i) = M(i,j);
end
end
end
t = t + 1;
end
我的想法是将元素存储到矩阵 trend
中,条件为 i == j+t
,这是我发现上三角形对角线的条件 . if子句被伪伪代码替换,伪伪代码试图通过矩阵的上三角形,但是因为在 trend
中找不到"1"向量,所以伪
如何在Matlab中从矩阵中获取对角线?
3 回答
如果我理解正确,您希望使用
spdiags
函数来提取上部对角线 . 例:结果:
尝试替换此部分:
有:
我没有't know why you want a while loop. What about directly indexing each of your diagonals using MATLAB'的内置diag功能: