Azzera filtri
Azzera filtri

Nodal admittance matrix using for loop and if statement

1 visualizzazione (ultimi 30 giorni)
I want to ask how can I get the matrix Y if I have the value of y1, y12, y13, y23,...,etc.
I have coding as below, but it dose not work. Who can help me?
B_matrix =[0 2.5000 0 1.6667 5.0000 0; -2.5000 0 5.0000 2.5000 0 0;0 -5.0000 0 0 5.0000 0; -1.6667 -2.5000 0 0 0 0; -5.0000 0 -5.0000 0 0 0; 0 0 0 0 0 0]
Y=zeros(6,6);
for m=1:6
for n=1:6
if m==n
for (k=1:6) & (k ~ = m)
Y(m,n)=B_matrix(m,n)+B_matrix(m,k);
else
Y(m,n)=-B_matrix(m,n);
end
end
end
end
Y

Risposta accettata

Andrei Bobrov
Andrei Bobrov il 16 Ott 2016
Y = diag(sum(B_matrix,2)) - (~eye(size(B_matrix))).*B_matrix;
  2 Commenti
yu yue
yu yue il 16 Ott 2016
hi, it seems not right. Y(2,1)=-2.5; Y(2,2)=10; Y(3,2)=-5; Y(3,3)=10; Y(4,1) =-1.67, Y(4,2)= -2.5; Y(4,4)=4.17; Y(5,1)=-5; Y(5,3)=-5; Y(5,5)=10;
Andrei Bobrov
Andrei Bobrov il 16 Ott 2016
aB = abs(B_matrix);
Y = diag(sum(aB,2)) - (~eye(size(B_matrix))).*aB;

Accedi per commentare.

Più risposte (0)

Categorie

Scopri di più su Get Started with MATLAB in Help Center e File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by