matlab - 如何将向量转换为矩阵? (Matlab)

标签 matlab matrix vector

我有一个大小为 (1,9) 的向量,其值如下:

 V= [0.5 0.1 0.1 0.9 0.5 0.1 0.9 0.9 0.5]

如何将向量 V 转换为大小为 (3,3) 的矩阵 M,其中第一行是向量的前 3 个元素,第二行包含向量的下 3 个元素,并为向量的所有其他元素保留该规则,如下所示:

       0.5 0.1 0.1
M=     0.9 0.5 0.1
       0.9 0.9 0.5

对于不同大小的向量,例如 (1,100),我如何根据上述规则转换为 (10,10) 的矩阵?

最佳答案

使用reshape ,然后转置结果:

M = reshape(V, 3, 3).';

reshape 将向量转换为所需大小的矩阵。矩阵以列优先顺序创建。因此,只需单独使用 reshape 即可将元素放置在列中。由于您希望元素按行填充,因此一个技巧是简单地转置结果。

一般来说,您想要将 N 元素向量 V reshape 为大小为 sqrt(N) 的方阵 M x sqrt(N) 按行优先顺序排列。对于一般情况,您可以这样做:

N = sqrt(numel(V));
M = reshape(V, N, N).';

这当然假设 V 中的元素总数是一个完美的正方形。

关于matlab - 如何将向量转换为矩阵? (Matlab),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40481241/

相关文章:

sorting - 如何在 MATLAB 中根据第二行对二维数组进行排序?

list - 在 Matlab 中实现对象容器的最佳方式

algorithm - 如何在内存较少的矩阵中找到连续区域?

c++ - 为 lldb 中的大型数据结构设置观察点

R递归获取任意深度嵌套列表的第一个元素的名称

Matlab Interp2 函数行为与 OpenCV Remap 不同

matlab - MatLab 中的数值不稳定性卡尔曼滤波器

r - 从表中计算概率

r - 使用稀疏矩阵作为 R 中 ranger 包的输入

c++ - 为什么填充我的 std::vector 的运行时间在 0 到 ~16 毫秒之间跳跃?