如何将矢量表示为矩阵?

时间:2014-02-18 08:21:29

标签: matlab vector matrix

我有一个长度为3的向量。我想将它表示为维度4 * 2的矩阵。 ie)如果向量的长度是n,那么矩阵应该是维度(n + 1)* 2。矩阵的元素排列如下:

Vector= [2 3 4]

Matrix = [0 2;2 3;3 4;4 0]

2 个答案:

答案 0 :(得分:4)

您可以通过简单的操作轻松解决问题:

vector = [2 3 4];
matrix = [0 vector; vector 0]';

'用于转置矩阵。

此外,Matlab中有两个有用的函数来操作矩阵和向量:

重塑()

repmat()

答案 1 :(得分:2)

来自Matlab的命令reshape是我回答你问题的基础:

  

B =重塑(A,m,n)返回m-by-n矩阵B,其元素从A中逐列获取。如果A没有m * n个元素,则会出现错误(from the official Matlab help )。

您基本上在开头和结尾添加零,然后让矢量中的每个数字出现两次(如果您“展开”/重塑矩阵)。因此,让我们通过颠倒这个描述构建所需的矩阵:

%set input vector
v = [2 3 4];
%"double" the numbers, v_ is my temporary storage variable
v_ = [v; v];
%align all numbers along one dimension
v_ = reshape(v_, 2*length(v), 1)
%add zeros at beginning and end
v_ = [0 v_ 0];
%procude final matrix
m = reshape(v_, length(v)+1, 2);

简而言之

%set input vector
v = [2 3 4];
%"double" the numbers, v_ is my temporary storage variable
%all values are aligned as row vector
%zeros are added at beginning and end
v_ = [0, v, v, 0];
%produce final matrix
m = reshape(v_, length(v)+1, 2);

我还没有检查过,因为我现在手头没有Matlab,但你应该明白这个想法。

修改

13aumi 的答案即使没有reshape命令也可以管理此任务。但是,您需要密切关注v的形状(行 - 列 - 矢量)。