Generate array of sequence pairs without iteration
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
Sabyrzhan Tasbolatov
il 29 Gen 2023
Commentato: Dyuman Joshi
il 29 Gen 2023
If I have M = 13; N = 8; and I need following result
[1 1; 1 2; 1 3; 1 4; 1 5; 1 6; 1 7; 1 8;...
2 1; 2 2; 2 3; 2 4; 2 5; 2 6; 2 7; 2 8; 3 1; ... 13 7; 13 8]
is there any built-in MATLAB functions to achieve this without iteration? I've tried repmat but couldn't figure out how to get the exact result.
Working solution is:
a = [];
for m = 1:13
for n = 1:8
a = [a [m n]];
end
end
Thanks
1 Commento
Stephen23
il 29 Gen 2023
The standard MATLAB approach is to use NDGRID or MESHGRID:
M = 13;
N = 8;
[x,y] = meshgrid(1:M,1:N);
a = [x(:),y(:)]
Risposta accettata
Dyuman Joshi
il 29 Gen 2023
Modificato: Dyuman Joshi
il 29 Gen 2023
A combination of repelem and repmat -
M=13;N=8;
%corresponding arrays
m=1:M;n=1:N;
out1=[repelem(m',N,1) repmat(n',M,1)]
out1(end,:)
out2=rot90(combvec(n,m),-1)
out2(end,:)
2 Commenti
Dyuman Joshi
il 29 Gen 2023
"in 1D with 2D elements [1 1; 1 2; 1 3; ...]"
Do you mean like this?
[1 1 1 2 1 3 .. 13 8]
If yes, then you have inserted the semi-colon incorrectly in both your statements, it should be a regular comma. The way to achieve that would be -
M=13;N=8;
out=reshape([repelem(1:M,1,N);repmat(1:N,1,M)],1,[])
Più risposte (0)
Vedere anche
Categorie
Scopri di più su Get Started with MATLAB in Help Center e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!