Merge nx3 double matrices present within a 3x1 cell

1 次查看(过去 30 天)
I have the following generic code that generates me a 3x1 "output" cell.
a=randi(100,157,2);
b=randi(200,189,2);
c=randi(300,183,2);
mat={a;b;c};
for i=1:size(mat,1)
if i==1
aaa(i)={[mat{i,1} repmat(100,size(mat{i,1},1),1)]};
elseif i==2
aaa(i)={[mat{i,1} repmat(150,size(mat{i,1},1),1)]};
elseif i==3
aaa(i)={[mat{i,1} repmat(200,size(mat{i,1},1),1)]};
end
end
output=aaa';
The internal of "output" is characterized by:
157x3 double
189x3 double
183x3 double
I would like to try to merge all the matrix (nx3), present inside "output", into one array (an example like this: link)
I used the following code but it gives an error due to the fact that the number of rows in each matrix is different.
matrix = [];
for nbr = 1:3
matrix = [matrix, output{nbr,1}];
end
  1 个评论
Stephen23
Stephen23 2022-12-11
编辑:Stephen23 2022-12-11
Simpler code and much more efficient use of MATLAB:
a=randi(100,157,2);
b=randi(200,189,2);
c=randi(300,183,2);
tmp = {a,b,c};
vec = [100,150,200];
for k = 1:numel(tmp)
tmp{k}(:,3) = vec(k);
end
out = vertcat(tmp{:}) % comma-separated list
out = 529×3
59 31 100 58 60 100 35 98 100 65 48 100 97 91 100 56 49 100 94 77 100 33 4 100 11 89 100 4 56 100

请先登录,再进行评论。

采纳的回答

C B
C B 2022-12-11
a=randi(100,157,2);
b=randi(200,189,2);
c=randi(300,183,2);
mat={a;b;c};
for i=1:size(mat,1)
if i==1
aaa(i)={[mat{i,1} repmat(100,size(mat{i,1},1),1)]};
elseif i==2
aaa(i)={[mat{i,1} repmat(150,size(mat{i,1},1),1)]};
elseif i==3
aaa(i)={[mat{i,1} repmat(200,size(mat{i,1},1),1)]};
end
end
output=aaa';
matrix = [];
for nbr = 1:3
matrix = [matrix; output{nbr,1}];
end
matrix
matrix = 529×3
97 80 100 12 3 100 38 40 100 54 71 100 96 94 100 25 50 100 81 59 100 4 76 100 73 85 100 54 37 100

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Wind Power 的更多信息

产品


版本

R2021b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by