looping through symmetric matrices
3 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi
I have two matrices T and Q, and I want to plot the corresponding elements of them such as in:
T = randi(10,10)
Q = randi(10,10)
hold on
for i = 1:10
for j = 1:10
plot(T(i,j),Q(i,j))
end
end
But the thing is that the matrices are symmetric, and for reasons of complexity I do not want to go through redundant elements twice..what can I do? Thanks
0 comentarios
Respuestas (3)
J. van Delft
el 18 de Jun. de 2014
Hi,
First of all the matrices are not symmetric. If they would be multiplying T with its transpose T' would give an identity matrix, which is not the case.
If I understand your question correctly you do not want to plot elements in T and Q that are equal? What you could do then is add a comparison in the inner for-loop. If the elements are equal, break the loop:
T = randi(10,10)
Q = randi(10,10)
hold on
for i = 1:10
for j = 1:10
if T(i,j) == Q(i,j)
break
end
plot(T(i,j),Q(i,j))
end
end
Let me know if this answers your question.
J. van Delft
2 comentarios
Andrei Bobrov
el 19 de Jun. de 2014
Editada: Andrei Bobrov
el 19 de Jun. de 2014
T = randi(20,10); %
Q = randi(20,10); %
T = tril(T) + tril(T,-1)'; %
Q = triu(Q) + triu(Q,1)'; % here we creating symmetric matrices
tt = tril(ones(size(T))) > 0;
plot(T(tt),Q(tt));
0 comentarios
Joseph Cheng
el 18 de Jun. de 2014
Editada: Joseph Cheng
el 18 de Jun. de 2014
What you can do is use the unique() function
example:
T=randi(10,10);
Q=randi(10,10);
temp = [T(:) Q(:)];
utemp = unique(temp,'rows','legacy');
figure,plot(utemp(:,1),utemp(:,2),'.');
the unique will get rid of any repeating pairs leaving only unique elements.
Ver también
Categorías
Más información sobre Loops and Conditional Statements 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!