Create a multidimensional Grid

5 visualizaciones (últimos 30 días)
Fab
Fab el 30 de Mayo de 2021
Editada: Walter Roberson el 30 de Mayo de 2021
Hi,
i try to create a multidimensional grid with these scalar values but i cannot wrap my head around how the code would look like if i use more than 2 or 3 Factors (I obviously don't want to make for each possible number of Factors an extra
if isequal(length(Factors),2), if isequal(length(Factors),3),if isequal(length(Factors),4),if isequal(length(Factors),5)
)
clear all;
clc;
FactorGrid = [];
%Three differend Factors, each Factor has 4 different possible values(each Factor has to have the same amount of different possible values )
Factors{1}= [1,2,3,4];
Factors{2}= [55,66,77,88];
Factors{3}= [101,202,303,404];
%For using 2 Factors
if isequal(length(Factors),2)
for k = 1:length(Factors{1})
for l = 1:length(Factors{2})
FactorGrid{end+1,1} = [Factors{1}(k),Factors{2}(l)];
end
end
end
%For using 3 Factors
if isequal(length(Factors),3)
for k = 1:length(Factors{1})
for l = 1:length(Factors{2})
for m = 1:length(Factors{3})
FactorGrid{end+1,1} = [Factors{1}(k),Factors{2}(l),Factors{3}(m)];
end
end
end
end
I tried to work with
perms()
but that didn't work either.
The grid should have the size of possible values^number of Factors, so in this case 4^3.
Can you help me out?

Respuesta aceptada

Fab
Fab el 30 de Mayo de 2021
Ok thanks, this does the job for me:
A= [1, 2, 3, 4]';
B= [55, 66, 77, 88]';
C= [101, 202, 303, 404]';
ma=size(A,1);
mb=size(B,1);
mc=size(C,1);
[a,b,c]=ndgrid(1:ma,1:mb,1:mc);
product = [A(a,:),B(b,:),C(c,:)];

Más respuestas (2)

Walter Roberson
Walter Roberson el 30 de Mayo de 2021
[FG{:}] = ndgrid(Factors{:});
  2 comentarios
Fab
Fab el 30 de Mayo de 2021
cellsForNgrid = cell(1,numel(Factors));
[cellsForNgrid{:}]=ndgrid(Factors{:});
cellsForNgrid was needed since "[FG{:}]" doesn't contain the amount of cells that are needed.
Walter Roberson
Walter Roberson el 30 de Mayo de 2021
True. Or you can
[cellsForNgrid{1:numel(Factors)}] = ndgrid(Factors{:});

Iniciar sesión para comentar.


Fab
Fab el 30 de Mayo de 2021
How would this ndgrid work with my code?
Read the documentation but i don't get the results i want.
I attached a picture of the result, if i use your code.

Categorías

Más información sobre Discrete Math 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!

Translated by