get p*(q*m) matrix from m*n matrix and p*q indexing matrix

1 visualización (últimos 30 días)
hey everyone,
is there an elegant way to get the following:
C=rand(8,n) %given
index=[...
1 5 1 2 3 4
2 6 2 3 4 1
3 7 6 7 8 5
4 8 5 6 7 8
1 5 1 2 3 4];
X=[...
C(1,1) C(5,1) C(1,1) ... ... C(4,1) C(1,n) C(5,n) C(1,n) ... ... C(4,n)
C(2,1) C(6,1) C(2,1) ... ... C(1,1) C(2,n) C(6,n) C(2,n) ... ... C(1,n)
C(3,1) C(7,1) C(6,1) ... ... C(5,1) ... C(3,n) C(7,n) C(6,n) ... ... C(5,n)
C(4,1) C(8,1) C(5,1) ... ... C(8,1) C(4,n) C(8,n) C(5,n) ... ... C(8,n)
C(1,1) C(5,1) C(1,1) ... ... C(4,1) C(1,n) C(5,n) C(1,n) ... ... C(4,n)
]
X=C(index,:)
gives the information but not arranged as desired. it is for plotting cubes by edge coordinates in 3d with patch command.
thanks for any help!

Respuesta aceptada

Davide Masiello
Davide Masiello el 17 de Oct. de 2022
Editada: Davide Masiello el 17 de Oct. de 2022
Something like this?
n = 3;
C = rand(8,n)
C = 8×3
0.8036 0.1626 0.1875 0.8851 0.4522 0.1023 0.8075 0.3073 0.0316 0.3548 0.5842 0.8018 0.6769 0.1753 0.1741 0.8239 0.0872 0.1524 0.0985 0.8049 0.5961 0.6590 0.9066 0.9541
index=[...
1 5 1 2 3 4
2 6 2 3 4 1
3 7 6 7 8 5
4 8 5 6 7 8
1 5 1 2 3 4];
X = reshape(C(index(:),1:n),size(index,1),size(index,2)*n)
X = 5×18
0.8036 0.6769 0.8036 0.8851 0.8075 0.3548 0.1626 0.1753 0.1626 0.4522 0.3073 0.5842 0.1875 0.1741 0.1875 0.1023 0.0316 0.8018 0.8851 0.8239 0.8851 0.8075 0.3548 0.8036 0.4522 0.0872 0.4522 0.3073 0.5842 0.1626 0.1023 0.1524 0.1023 0.0316 0.8018 0.1875 0.8075 0.0985 0.8239 0.0985 0.6590 0.6769 0.3073 0.8049 0.0872 0.8049 0.9066 0.1753 0.0316 0.5961 0.1524 0.5961 0.9541 0.1741 0.3548 0.6590 0.6769 0.8239 0.0985 0.6590 0.5842 0.9066 0.1753 0.0872 0.8049 0.9066 0.8018 0.9541 0.1741 0.1524 0.5961 0.9541 0.8036 0.6769 0.8036 0.8851 0.8075 0.3548 0.1626 0.1753 0.1626 0.4522 0.3073 0.5842 0.1875 0.1741 0.1875 0.1023 0.0316 0.8018
  2 comentarios
Daniel Neubauer
Daniel Neubauer el 17 de Oct. de 2022
thanks for the reply.
however, is there a way without looping? my data is rather big so i'd prefer not to loop.
Davide Masiello
Davide Masiello el 17 de Oct. de 2022
I understand, I have changed my answer.
I believe it should work that way either.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by