Merge nx3 double matrices present within a 3x1 cell
2 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Alberto Acri
el 11 de Dic. de 2022
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 comentario
Stephen23
el 11 de Dic. de 2022
Editada: Stephen23
el 11 de Dic. de 2022
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
Respuesta aceptada
Chetan Bhavsar
el 11 de Dic. de 2022
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
0 comentarios
Más respuestas (0)
Ver también
Categorías
Más información sobre Wind Power en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!