2014-02-18 142 views
1

我有一个长度为3的向量。我想将其表示为维度为4 * 2的矩阵。即)如果矢量的长度是n,那么矩阵应该是维数(n + 1)* 2。基质应当具有布置的元件如下:如何将矢量表示为矩阵?

Vector= [2 3 4] 

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

回答

2

从Matlab的命令reshape是我的问题的答案的基础:

B =重塑(A,M,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(row-vs-column-vector)的形状。

+0

感谢.....它的工作...我尝试给名称到每行和每列......任何提示.. – user3168654

+0

您可以使用结构体或单元格来存储相关的字符串,参见参考资料。 http://www.mathworks.com/help/matlab/ref/strings.html BTW:您可能想要提出一个新问题,即使它可能与您之前询问的另一个问题有关。这就是StackOverflow的工作方式。(当然你可以添加一个超链接到相关的问题) – fuesika

+0

pyStarter:谢谢 – user3168654

4

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

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

'被用来转置矩阵。

此外,还有在Matlab两个有用的函数处理向量和矩阵:

重塑()

repmat()

+2

+1但是我建议你改变'[0 vector; vector 0]''到'[0 vector(:)。';向量(:)。' 0]。';'这样它也可以工作,如果'vector'是一列,并且即使它很复杂(使用转置而不是共轭转置) –

+0

@LuisMendo谢谢 – user3168654