# Rearrange matrix terms is a challenge

조회 수: 1(최근 30일)
Roger Breton 2022년 5월 3일
편집: Roger Breton 2022년 5월 3일
I am not finding exactly the right parameters to rearrange the terms of a matrix? It starts off as an RGB image I later convert to Lab, and want to store the Lab values to a text file in a particular rows x columns order, such that I end up with 49 rows by 33 columns. This is the code I have so far :
imshow(img);
img_double = im2double(img);
LabIMG = reshape(permute(img2Lab,[3 1 2]),3,[]); % 3 x 1617
The LabIMG give mes a 3 rows x 1617 columns like this : What I would like to have is for the data to be rearranged this way :
A1 = 42.29 66.60 0.69
B1 = some data (not shown)
C1 = some other data (not shown either)
... up to column 49 (AW1)
Then, the second row would follow with :
A2 = 47.57 58.15 1.54
B2 = ...
B3 = ...
.... Up to BW1
Third row :
C1 = 53.84 46.90 -0.31
C2 = ...
C3 = ...
... Up to CW1
Until I have 33 rows by 49 data points. I tried Transpose to no avail :
Transposed_CIELab = transpose(LabIMG);
I enclosed the resultant text file.... in case
I'm going in circles... Any help is appreciated.
##### 댓글 수: 5표시숨기기 이전 댓글 수: 4
Roger Breton 2022년 5월 3일
I was coming to a solution on my own, using a loop. It's not elegant :
LabIMG = reshape(permute(img2Lab,[3 1 2]),3,[]); % 3 x 1617
% Note: Les données sont en ordre de Colonnes dans LabIMG
Position = 1;
RowStep = 1;
for i = 1:1617
Index(i) = Position;
Position = Position + 49;
reste = rem(i,33);
if (reste == 0)
RowStep = RowStep + 1;
Position = RowStep;
end
end
IndexColumn = transpose(Index);
CIE_L = transpose(LabIMG(1,:,:)); % --> k'th slice along x direction
CIE_a = transpose(LabIMG(2,:,:)); % --> k'th slice along y direction
CIE_b = transpose(LabIMG(3,:,:)); % --> k'th slice along z direction
Final = [IndexColumn, CIE_L, CIE_a, CIE_b];
At this stage, I'm going to read on Matlab "sorting". We'll see where it gets me but glad I thought about the remainder function, so that I can test the position in the row and determine whether I need to break it or not on the base of remainder. Sigh! ...

댓글을 달려면 로그인하십시오.

R2021a

### Community Treasure Hunt

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

Start Hunting!