reverse indexing of a matrix in matlab
68 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
lilly lord
el 7 de Jun. de 2020
Comentada: lilly lord
el 7 de Jun. de 2020
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 comentario
KSSV
el 7 de Jun. de 2020
[m_1(j,:),Index]=Ma(j,:);
This will not work.....from where you expect to get Index? What actualy you are looking for.
Respuesta aceptada
Sriram Tadavarty
el 7 de Jun. de 2020
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 comentarios
Sriram Tadavarty
el 7 de Jun. de 2020
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
Más respuestas (0)
Ver también
Categorías
Más información sobre Matrix Indexing en Help Center y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!