reverse indexing of a matrix in matlab

85 ビュー (過去 30 日間)
lilly lord
lilly lord 2020 年 6 月 7 日
コメント済み: lilly lord 2020 年 6 月 7 日
Hi I have the code and i want the inverse mapping that is to get back P
P=[188 5 95 60;3 59 0 111;255 123 51 84 ];
Ma=[25 222 80 6;100 1 190 97;73 33 254 184 ];
M_1=zeros(size(Ma ));
P_1=zeros(size(P ));
for i=1:3
[M_1(i,:),Index]=sort(Ma(i ,:));
P_1(i,:) = P(i,Index );
end
%%%%%%Inverse
m_1=zeros(size(M_1));
p_1=zeros(size(P_1));
for j=1:3
[m_1(j,:),Index]=Ma(j,:);% here I dont need any sort commant bur error occurs here
p_1(j,:)=P_1(j,Index);
end
p_1
  1 件のコメント
KSSV
KSSV 2020 年 6 月 7 日
[m_1(j,:),Index]=Ma(j,:);
This will not work.....from where you expect to get Index? What actualy you are looking for.

サインインしてコメントする。

採用された回答

Sriram Tadavarty
Sriram Tadavarty 2020 年 6 月 7 日
Hi Lilly,
You get error at that line, because, you just removed the sort operation, which can provide two outputs.
The code can not have two outputs, when it is just a variable and no operation is performed on it.
Your code above doesn't perform what you wanted to do. You can perform or get the inverse, with the help of Index variable.
Here is the code that can be done, if you have Index variable
P=[188 5 95 60;3 59 0 111;255 123 51 84 ];
Ma=[25 222 80 6;100 1 190 97;73 33 254 184 ];
M_1=zeros(size(Ma ));
P_1=zeros(size(P ));
Index = zeros(size(Ma));
for i=1:3
[M_1(i,:),Index(i,:)]=sort(Ma(i ,:));
P_1(i,:) = P(i,Index(i,:) );
end
%%%%%%Inverse
% Perform this with the help of Index
p_1 = zeros(size(P_1));
for j = 1:3
p_1(j,Index(j,:)) = P_1(j,:);
end
p_1
isequal(p_1,P) % To check if p_1 is equal to P
Hope this helps.
Regards,
Sriram
  3 件のコメント
Sriram Tadavarty
Sriram Tadavarty 2020 年 6 月 7 日
Hi Lilly,
Did you try the above code as is? I do get the output. Can you once clear your workspace and try?
I just didn't change only the second for loop. There is even a change in the first for loop to store the index values. Please do let me know, once you try the code as is.
Hope this helps.
Regards,
Sriram
lilly lord
lilly lord 2020 年 6 月 7 日
Oh sorry, i have changed the bottom loop only. Now I get the correct output. Thank you so much

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by