looping through symmetric matrices

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

Réponses (3)

J. van Delft
J. van Delft le 18 Juin 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 commentaires

MiauMiau
MiauMiau le 19 Juin 2014
well this was example code. the matrices in my code are symmetric.
MiauMiau
MiauMiau le 19 Juin 2014
No, so I want to plot all the Elements of T and Q which have the same index but if the pairs happen to have values as already encountered I do not want them to be considered.. so for [1 4; 4 5] and [2 3; 3 6] the pairs to be plottet would be (1/2), (4/3),(4/3),(5/6) but the repeated (4/3) should not be considered...

Connectez-vous pour commenter.

Andrei Bobrov
Andrei Bobrov le 19 Juin 2014
Modifié(e) : Andrei Bobrov le 19 Juin 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));
Joseph Cheng
Joseph Cheng le 18 Juin 2014
Modifié(e) : Joseph Cheng le 18 Juin 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.

1 commentaire

MiauMiau
MiauMiau le 19 Juin 2014
thats not doing what i want at all..I always want to plot the elements with the same index, and if these pairs are repeated they should not be plotted..

Connectez-vous pour commenter.

Catégories

En savoir plus sur Loops and Conditional Statements dans Centre d'aide et File Exchange

Question posée :

le 18 Juin 2014

Modifié(e) :

le 19 Juin 2014

Community Treasure Hunt

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

Start Hunting!

Translated by