我有一个长度为3的向量。我想将其表示为维度为4 * 2的矩阵。即)如果矢量的长度是n,那么矩阵应该是维数(n + 1)* 2。基质应当具有布置的元件如下:如何将矢量表示为矩阵?
Vector= [2 3 4]
Matrix = [0 2;2 3;3 4;4 0]
我有一个长度为3的向量。我想将其表示为维度为4 * 2的矩阵。即)如果矢量的长度是n,那么矩阵应该是维数(n + 1)* 2。基质应当具有布置的元件如下:如何将矢量表示为矩阵?
Vector= [2 3 4]
Matrix = [0 2;2 3;3 4;4 0]
从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)的形状。
您可以通过简单的操作,轻松解决你的问题:
vector = [2 3 4];
matrix = [0 vector; vector 0]';
'被用来转置矩阵。
此外,还有在Matlab两个有用的函数处理向量和矩阵:
重塑()
repmat()
+1但是我建议你改变'[0 vector; vector 0]''到'[0 vector(:)。';向量(:)。' 0]。';'这样它也可以工作,如果'vector'是一列,并且即使它很复杂(使用转置而不是共轭转置) –
@LuisMendo谢谢 – user3168654
感谢.....它的工作...我尝试给名称到每行和每列......任何提示.. – user3168654
您可以使用结构体或单元格来存储相关的字符串,参见参考资料。 http://www.mathworks.com/help/matlab/ref/strings.html BTW:您可能想要提出一个新问题,即使它可能与您之前询问的另一个问题有关。这就是StackOverflow的工作方式。(当然你可以添加一个超链接到相关的问题) – fuesika
pyStarter:谢谢 – user3168654