有没有一种创建非矩形矩阵的方法?例如,如果我有一个矩阵a=[6 8 10]和另一个矩阵b=[1 5],我是否可以垂直连接它们以获得一行中的[6 8 10]和另一行中的[1 5]?
发布于 2015-02-04 21:58:07
直接的答案是no。MATLAB不支持粗糙的或非矩形或非方形的矩阵。一种方法就是制作一个单元格数组,每个单元格都是一个长度不等的向量。
类似于:
a = [6 8 10];
b = [1 5];
c = cell(1,2);
c{1} = a;
c{2} = b;
celldisp(c)
c{1} =
6 8 10
c{2} =
1 5另一种方法是创建一个矩阵,其中那些不包含任何内容的值被映射到一个预设的数字,比如零。因此,您可以将a和b连接成一个矩阵,使其成为[6 8 10; 1 5 0];。如果这是你喜欢的,你可以这样做:
a = [6 8 10];
b = [1 5];
c = zeros(2, 3);
c(1,1:numel(a)) = a;
c(2,1:numel(b)) = b;
disp(c)
6 8 10
1 5 0关于这个特定主题的更全面的论文可以在新手的回答中找到:如何在MATLAB中将不同长度的细胞累积成一个矩阵?。
另一个相关的答案是由Jonas创建的:如何将不均匀矩阵组合成单个矩阵?
https://stackoverflow.com/questions/28332204
复制相似问题