How to put value from one matrix into another matrix

8 Ansichten (letzte 30 Tage)
Panida Kaewniam
Panida Kaewniam am 28 Feb. 2023
Kommentiert: Panida Kaewniam am 9 Mär. 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

Antworten (3)

Torsten
Torsten am 28 Feb. 2023
Bearbeitet: Torsten am 28 Feb. 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 Kommentar
Panida Kaewniam
Panida Kaewniam am 28 Feb. 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

Melden Sie sich an, um zu kommentieren.


Torsten
Torsten am 28 Feb. 2023
Bearbeitet: Torsten am 28 Feb. 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 am 1 Mär. 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 Kommentar
Panida Kaewniam
Panida Kaewniam am 9 Mär. 2023
Thanks a lot sir. This one also work and use the function ismember as I tried before.

Melden Sie sich an, um zu kommentieren.

Kategorien

Mehr zu Matrices and Arrays finden Sie in Help Center und File Exchange

Produkte


Version

R2018a

Community Treasure Hunt

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

Start Hunting!

Translated by