MATLAB: How to match Y with X

data analysisMATLABmatricesmatrixmatrix arraymatrix manipulation

Hello, I have a matrix (X) and another one (Y) and I was trying to match each row in Y with its counterpart in X so that:
  • Y size = 24 rows (each one represents data record in an hour, so 24 rows represent a full day) * n columns.
  • X size = 145 rows (data represented in a full day) * m columns.
  • The 3rd column in Y represents hours as 1, 2, 3, …, 24.
  • The 2nd column in X represents hours but dublicated without sequential order (i.e. 2, 2, 2, 2, 2, 2, 3, 3, 3, …).
  • I need to loop on X rows and Y rows too to check if the value in the 1st column at this row in X equal the value at the 3rd column of the Y matrix.
  • If that's true, then copy the data of Y matrix within the columns 4:11 at that row and paste them in the matrix X within the columns 5:12.
  • The final X matrix should have dublicated data records from Y matrix at the assigned rows.
Here's what I've tried but didn't work as I expect.
for i = 1:length(Y)
for j = 1:length(X)
if X(j,1) == Y(i,3)
X(i,5:12) = Y(j,4:11);
end
end
end
clear i j
Could you tell me how to fix the logic in this code?
Thanks in advance.

Best Answer

How about the following? Running this code, the table T becomes the same as in your desired_output.xlsx.
X = readtable('X .xlsx');
Y = readtable('Y .xlsx');
T = innerjoin(X,Y,'LeftKeys','C1','RightKeys','B3');
T(:,{'B1','B2'}) = [];