how to put the same value in a number of lines in the first column of a matrix and different values in the second column (values coming from vectors)
1 vue (au cours des 30 derniers jours)
Afficher commentaires plus anciens
Myssipsa Mehraz
le 26 Juin 2021
Modifié(e) : Stephen23
le 27 Juil 2025
Hello everyone,
My problem is that i have to report values from 2 vectors (of positions) in a matrix of (nx2), and for each value of the first vector (first columns) i should have m values in the second column and so on.
EXAMPLE :
vect_1=1:1:2;
vect_2=1:1:4;
%i want have this in my matrix
1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
I'm a debutant in Matlab, so i tried some loops but it never does what i want.
Thank you, for helping.
0 commentaires
Réponse acceptée
Jonas
le 26 Juin 2021
for the first column have a look into repelem(), for the second column have a look into repmat()
if you need more detailed help, just tell us
3 commentaires
Jonas
le 27 Juin 2021
does this exanple help you? nrOfReps is the number of tepetitions of vector 2 and repelem repeats the elemts of vector 1 according to vector length of vector 2 compared to length of vector 1 and number of tepetitions of vector 2
nrOfReps=2;
vect1=(1:2)';
vect2=(1:4)';
mat(:,1)=repelem(vect1,length(vect2)/length(vect1)*nrOfReps);
mat(:,2)=repmat(vect2,[nrOfReps 1])
Plus de réponses (1)
Stephen23
le 29 Juin 2021
Modifié(e) : Stephen23
le 27 Juil 2025
The simple MATLAB approach is to leverage NDGRID:
v1 = 1:1:2;
v2 = 1:1:4;
[m2,m1] = ndgrid(v2,v1);
m = [m1(:),m2(:)]
Can be extended to any number of vectors (although you will run out of memory very quickly):
C = {v1,v2}; % any number of vectors
N = numel(C);
[C{end:-1:1}] = ndgrid(C{end:-1:1});
m = reshape(cat(N+1,C{:}),[],N)
Voir également
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!