How to put value from one matrix into another matrix

28 visualizaciones (últimos 30 días)
Panida Kaewniam
Panida Kaewniam el 28 de Feb. de 2023
Comentada: Panida Kaewniam el 9 de Mzo. de 2023
I have two matrixes called A and B. The matrix A is 20x2 and matrix B is 4x5. I suppose the first column of matrix A is 1 to 20 and the second column is the values of number 1-20. The matrix B is a new rearraged matrix of the first column of matrix A (number 1-20). I want to put the values from the second column of matrix A into the matrix B.
I have search the Matlab function that maybe related is ismember. But I am still confused how to coding. Thank you in advance

Respuestas (3)

Torsten
Torsten el 28 de Feb. de 2023
Editada: Torsten el 28 de Feb. de 2023
help reshape
Or are the entries of the matrix B not necessarily as regular as in your picture ?
A = [1 2 3 4 5 6 7 8;0.2 0.8 0.3 0.6 0.5 0.1 1.2 0.8].';
B = reshape(A(:,1),[4 2])
B = 4×2
1 5 2 6 3 7 4 8
Results = reshape(A(:,2),[4 2])
Results = 4×2
0.2000 0.5000 0.8000 0.1000 0.3000 1.2000 0.6000 0.8000
  1 comentario
Panida Kaewniam
Panida Kaewniam el 28 de Feb. de 2023
Thanks for prompt reply. I maybe did not explain my data clearly. Actually, matrix B is formed by selecting some value of matrix A. It means that not all values of the 1st column of matrix A is used in matrix B.
For example, matrix A is sized 40x2 (the 1st colomn of matrix A is 3 to 43). The matrix B use some data of matrix A like the photo below.
I am trying to write some code but it doesn't give the correct results.
Thanks again
result = [];
for i = 1:1:length(A(:,1))
result = find(ismember(B,A(:,1)));
result = A(:,2);
end

Iniciar sesión para comentar.


Torsten
Torsten el 28 de Feb. de 2023
Editada: Torsten el 28 de Feb. de 2023
A = [3:42;rand(1,40)].';
B = [6 45 18 24 33;5 12 17 23 32;4 11 16 22 31;3 10 15 21 30];
result = zeros(size(B));
for i = 1:size(B,1)
for j = 1:size(B,2)
index = find(A(:,1)==B(i,j));
if isempty(index)
result(i,j) = NaN;
else
result(i,j) = A(index,2);
end
end
end
result
result = 4×5
0.2359 NaN 0.6920 0.4382 0.5104 0.4386 0.3690 0.9290 0.6086 0.6957 0.1525 0.0100 0.6069 0.9521 0.7143 0.6569 0.7619 0.0783 0.6285 0.3234

Stephen23
Stephen23 el 1 de Mzo. de 2023
A = [3:42;rand(1,40)].'
A = 40×2
3.0000 0.1042 4.0000 0.3039 5.0000 0.6918 6.0000 0.0111 7.0000 0.7219 8.0000 0.6514 9.0000 0.1826 10.0000 0.4777 11.0000 0.7469 12.0000 0.0053
B = [6,45,18,24,33;5,12,17,23,32;4,11,16,22,31;3,10,15,21,30]
B = 4×5
6 45 18 24 33 5 12 17 23 32 4 11 16 22 31 3 10 15 21 30
R = nan(size(B));
[X,Y] = ismember(B,A(:,1));
R(X) = A(Y(X),2)
R = 4×5
0.0111 NaN 0.4559 0.6373 0.7475 0.6918 0.0053 0.9486 0.4545 0.9259 0.3039 0.7469 0.4148 0.8065 0.9770 0.1042 0.4777 0.0071 0.9220 0.0752
  1 comentario
Panida Kaewniam
Panida Kaewniam el 9 de Mzo. de 2023
Thanks a lot sir. This one also work and use the function ismember as I tried before.

Iniciar sesión para comentar.

Categorías

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

Etiquetas

Productos


Versión

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by