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 visualización (últimos 30 días)
Mostrar comentarios más antiguos
Myssipsa Mehraz
el 26 de Jun. de 2021
Comentada: Jonas
el 30 de Jun. de 2021
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 comentarios
Respuesta aceptada
Jonas
el 26 de Jun. de 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 comentarios
Jonas
el 27 de Jun. de 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])
Más respuestas (1)
Stephen23
el 29 de Jun. de 2021
Editada: Stephen23
el 29 de Jun. de 2021
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
[C{end:-1:1}] = ndgrid(C{end:-1:1});
m = cell2mat(cellfun(@(a)a(:),C,'uni',0))
Ver también
Categorías
Más información sobre Creating and Concatenating Matrices 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!