Cell array of coordinates from two vectors

조회 수: 6 (최근 30일)
LC
LC 2018년 10월 5일
댓글: shashikiran mudavath 2020년 9월 21일
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.

채택된 답변

Stephen23
Stephen23 2018년 10월 5일
편집: Stephen23 2018년 10월 5일
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
LC
LC 2018년 10월 5일
Thanks a lot!
shashikiran mudavath
shashikiran mudavath 2020년 9월 21일
How to acess M ?

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

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

카테고리

Help CenterFile Exchange에서 Loops and Conditional Statements에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by