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)
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.

Respuesta aceptada

Jonas
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
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])
Myssipsa Mehraz
Myssipsa Mehraz el 29 de Jun. de 2021
It does exactly what i want. Now i have to expand it for several vectors.
Thank you.

Iniciar sesión para comentar.

Más respuestas (1)

Stephen23
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(:)]
m = 8×2
1 1 1 2 1 3 1 4 2 1 2 2 2 3 2 4
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))

Categorías

Más información sobre Creating and Concatenating Matrices en Help Center y File Exchange.

Productos


Versión

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by