Håv*_*hus 0 matlab vector matrix octave triangular
给定矩阵A,其对角线上的零点和下三角形部分:
A = triu(rand(5,5), 1) % example
A =
0.00000 0.47474 0.55853 0.30159 0.97474
0.00000 0.00000 0.03315 0.74577 0.20878
0.00000 0.00000 0.00000 0.54966 0.76818
0.00000 0.00000 0.00000 0.00000 0.82598
0.00000 0.00000 0.00000 0.00000 0.00000
Run Code Online (Sandbox Code Playgroud)
我想将A转换为一个跳过所有零元素的紧凑向量v:
v = [0.47474 0.55853 0.30159 0.97474 0.03315
0.74577 0.20878 0.54966 0.76818 0.82598]
Run Code Online (Sandbox Code Playgroud)
后来我想从矢量转换回矩阵.
问题:在这两种表示之间进行转换的优雅方式是什么?
我将从一个上三角矩阵开始
B = triu(ones(5,5), 1)
Run Code Online (Sandbox Code Playgroud)
然后v可以定义为:
v = A(B==1)
Run Code Online (Sandbox Code Playgroud)
从转换回v到一
A = B
A(B==1) = v
Run Code Online (Sandbox Code Playgroud)