kgk*_*kgk 2 matlab vector matrix
我有一个大小为 (1,9) 的向量,其值如下:
V= [0.5 0.1 0.1 0.9 0.5 0.1 0.9 0.9 0.5]
Run Code Online (Sandbox Code Playgroud)
如何将向量V
转换为M
大小为 (3,3)的矩阵,其中第一行是向量的前 3 个元素,第二行包含向量的下 3 个元素,并为所有其他元素保留该规则向量的元素如下:
0.5 0.1 0.1
M= 0.9 0.5 0.1
0.9 0.9 0.5
Run Code Online (Sandbox Code Playgroud)
同样对于不同大小的向量,例如 (1,100),如何根据上述规则转换为 (10,10) 矩阵?
使用reshape
,然后转置结果:
M = reshape(V, 3, 3).';
Run Code Online (Sandbox Code Playgroud)
reshape
将向量转换为所需大小的矩阵。矩阵以列优先顺序创建。因此,单独使用reshape
会将元素放置在列中。由于您希望元素按行填充,因此一个技巧是简单地转置结果。
通常,您希望将N
元素向量重塑为按行优先顺序大小V
的方阵。您可以针对一般情况执行此操作:M
sqrt(N) x sqrt(N)
N = sqrt(numel(V));
M = reshape(V, N, N).';
Run Code Online (Sandbox Code Playgroud)
这当然假设元素的总数V
是一个完美的正方形。
归档时间: |
|
查看次数: |
4320 次 |
最近记录: |