Cell array of coordinates from two vectors

4 vues (au cours des 30 derniers jours)
LC
LC le 5 Oct 2018
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.
  1 commentaire
KSSV
KSSV le 5 Oct 2018
Have a look on perms

Connectez-vous pour commenter.

Réponse acceptée

Stephen23
Stephen23 le 5 Oct 2018
Modifié(e) : Stephen23 le 5 Oct 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 commentaires
LC
LC le 5 Oct 2018
Thanks a lot!
shashikiran mudavath
shashikiran mudavath le 21 Sep 2020
How to acess M ?

Connectez-vous pour commenter.

Plus de réponses (1)

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

Catégories

En savoir plus sur Loops and Conditional Statements dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by