Cell array of coordinates from two vectors

3 visualizaciones (últimos 30 días)
LC
LC el 5 de Oct. de 2018
Comentada: shashikiran mudavath el 21 de Sept. de 2020
I have two vectors, one with 119 X values and a one with 102 Y values. I'm trying to work out a way to combine these to create to all possible unique sets of coordinates (12,138 unique coordinates). I could use two nested for loops to do it, but it's very slow. I'm struggling to find if theres any combination of matlab functions that could achieve this.

Respuesta aceptada

Stephen23
Stephen23 el 5 de Oct. de 2018
Editada: Stephen23 el 5 de Oct. de 2018
No loops required, just use ndgrid and indexing:
>> X = randi(999,119,1); % must be column vector
>> Y = randi(999,102,1); % must be column vector
>> [idx,idy] = ndgrid(1:numel(X),1:numel(Y));
>> M = [X(idx(:)),Y(idy(:))];
>> size(M)
ans =
12138 2
Here is a simpler example:
>> X = (1:5).';
>> Y = (6:9).';
>> [idx,idy] = ndgrid(1:numel(X),1:numel(Y));
>> M = [X(idx(:)),Y(idy(:))];
>> M
M =
1 6
2 6
3 6
4 6
5 6
1 7
2 7
3 7
4 7
5 7
1 8
2 8
3 8
4 8
5 8
1 9
2 9
3 9
4 9
5 9
  2 comentarios
LC
LC el 5 de Oct. de 2018
Thanks a lot!
shashikiran mudavath
shashikiran mudavath el 21 de Sept. de 2020
How to acess M ?

Iniciar sesión para comentar.

Más respuestas (1)

Raghunandan V
Raghunandan V el 5 de Oct. de 2018
you should you at least one nested loop
for k=1:length(X)
z=[X(k) Y'];
perms(Z);
end

Categorías

Más información sobre Loops and Conditional Statements 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