WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Leitwert Matrix erzeugen

 

lmatias
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 10:43     Titel: Leitwert Matrix erzeugen
  Antworten mit Zitat      
Hallo,

ich habe leider keinerlei Matlab Erfahrung und stehe vor folgendem Problem:
gegeben ist eine Excel Tabelle mit 3 Spalten. In der 1. stehen Werte für Widerstände, in der 2. die Knotennummern und in der 3. die Wiederstandsnummern.
Spalten 2 und 3 geben also sozusagen die Topologie wieder.
Nun kann ich das ganze ja importieren und habe 3 einzelne Vektoren mit den jeweiligen Zeilen.
Am Ende hätte ich gerne eine Leitwertmatrix raus wobei auf der Diagonalen die Leitwerte am Knoten i summiert werden und auf den Nebendiagonalen dann die negativen 1/R_n,i.
Mein erstes Problem ist jetzt, dass ich nicht weis, wie ich Matlab klarmachen soll, dass bspw in Zeile 3 der 1. Spalte der Wiederstand mit der Nummer 15 am Knoten 1 steht.

Ich hoffe ich konnte meine Problemstellung halbwegs verständlich darstellen und freue mich über Antworten.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2017, 10:58     Titel:
  Antworten mit Zitat      
Hallo,

mir fehlt das Anwendungswissen, um deine Frage zu verstehen.

Vielleicht kannst du anhand eines Beispiels mit 10 Zeilen oder so aufzeigen, wie die gewünschten Ergebnisse ermittelt werden sollen?

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
lmatias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 11:08     Titel:
  Antworten mit Zitat      
Hallo,

danke für die schnelle Antwort. Ich habe ein Dokument hochgeladen, dass die Problemstellung darstellt (S. 3 d)). Hier wird das Problem in Mathcad gelöst. Ich würde dies nun gerne mit Matlab realisieren.

Grüße

Siehe http://www.qucosa.de/fileadmin/data.....waermung_el_Maschinen.pdf
Private Nachricht senden Benutzer-Profile anzeigen
 
lmatias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 11:21     Titel:
  Antworten mit Zitat      
ach so, und eine Leitwertmatrix dieser Art berechnet sich folgendermaßen:
bspw 3 Knoten, 4 Widerstände(R13, R23, R12, R30), 4 unbekannte(t1, t2, t3) Temperaturen, 3 Verlustleistungen(Pv1, Pv2, Pv3). Nun kann man eine Knotenspannungsanalyse durchführen, sprich an jedem Knoten den Knotenpunktsatz anwenden. Exemplarisch für den 1. Knoten: Pv1= 1/R13*t1-1/R13*t3+1/R12*t1-1/R12*t2
dies macht man nun für alle Knoten und ermittelt daraus die Matrix.
Diese Leitwertmatrix hat somit die folgende Form: http://webfiles.portal.chalmers.se/et/PhD/KylanderGunnarPhD.pdf
S.42 (33)
Private Nachricht senden Benutzer-Profile anzeigen
 
lmatias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.05.2017, 14:05     Titel:
  Antworten mit Zitat      
mir geht es primär um den richtigen Import von den Excel Daten. Natürlich könnte ich nun händisch neue Variablen mit den richtigen Widerstandsbezeichnungen definieren und diesen dann den Wert aus einer importierten Excel Tabelle zuweisen.
Bsp:
Code:
R_15 = R(3);
R sei hier der Vektor mit den Widerstandswerten.
Dies ist aber recht aufwendig, bei ca 20 Widerständen.

eine beispielhafte Tabelle habe ich angehängt.
Ich habe leider keine Ahnung wie ich aus der Tabelle dem Widerstandswert die richtige Widerstandsnummer zuordnen soll.
Und sekundär möchte ich dann die Matrix erstellen.
Ich hoffe jetzt ist mein vorhaben besser ersichtlich.

BeispielTabelle.xls
 Beschreibung:

Download
 Dateiname:  BeispielTabelle.xls
 Dateigröße:  30 KB
 Heruntergeladen:  331 mal
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.05.2017, 14:42     Titel:
  Antworten mit Zitat      
Hallo,

ich würde dir ja gerne helfen, kann aber mit den Erklärungen wenig anfangen.

Das erste PDF mag für Leute mit entsprechenden Anwendungsvorkenntnissen klar sein. Mir erschließt sich daraus jedoch nicht, wie sich die Matrix in d) aus der vorherigen Matrix ergibt.

Die zweite Erklärung: wenn t1 bis t3 unbekannt sind, wie soll man dann damit rechnen?

Das nächste PDF: mit der Formel (33) kann ich nun was anfangen, nur scheint sie im Widerspruch zu deiner vorherigen Formel zu stehen. Was ist hier i und j? Vielleicht Widerstands- und Knotennummern?

Es wäre schön, wenn du zu deinem kleinen Datenbeispiel auch angibst, wie hier das gewünschte Ergebnis ist.

Statt
Code:
R_15 = R(3)

könnte etwas in der Form helfen:
Code:
R_15 = R(Wid == 15)


Das ist allerdings ein Schuss ins Blaue, da ich die genaue Anwendung weiterhin nicht verstehe. Es bräuchte also eine für Fachfremde (wie mich) klar verständliche Erklärung , oder du musst dich gedulden, bis jemand mit entsprechenden Fachkenntnissen hier reinschaut. Ob und wann das der Fall sein wird, kann ich nicht abschätzen.

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
lmatias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.05.2017, 15:30     Titel:
  Antworten mit Zitat      
So, ich habe mir jetzt nochmal ein paar gedanken gemacht. Nach wie vor habe ich die 3 Vektoren bspw: Rth=(1000;3;7;9) KnNr=(1;1;1;2) und WidNr=(15;2;5;16)
ich möchte nun eine Matrix erzeugen, die der des obigen Links entspricht. Auf der Hauptdiagonalen die Summe über die Leitwerte der Rth-Werte, die am jeweiligen Knoten stehen Bsp: Am Knoten 1 sind die Widerstände 15, 2, 5 -->position der Leitwertsumme in der neuen Matrix GG :
Code:
GG(1,1) = 1000+3+7

Auf den Nebendiagonalen stehen die negativen Leitwerte. Diese entsprechen der folgenden Anordnung: Der Widerstand mit der Nummer k am Knoten i findet sich in der Matrix an der Position GG(i,k) und G(k,i)
Nun habe ich auch schon angefangen etwas Code zu schreiben und dieser sieht wie folgt aus:
Code:
for i = 1:22
    pos=find(KnNr==i);
if pos == find(WidNr==2)
             GG(1,2)=(-1)/Rth(pos);
             GG(2,1)=(-1)/Rth(pos);
     elseif pos == find(WidNr==5)
         GG(1,5)=(-1)/Rth(pos);
         GG(5,1)=(-1)/Rth(pos);
     elseif pos == find(WidNr==3)
         GG(2,3)=(-1)/Rth(pos);
         GG(3,2)=(-1)/Rth(pos);
     elseif pos == find(WidNr==10)
         GG(2,10)=(-1)/Rth(pos);
         GG(10,2)=(-1)/Rth(pos);
     elseif pos == find(WidNr==4)
         GG(3,4)=(-1)/Rth(pos);
         GG(4,3)=(-1)/Rth(pos);
     elseif pos == find(WidNr==6)
         GG(4,6)=(-1)/Rth(pos);
         GG(6,4)=(-1)/Rth(pos);
     elseif pos == find(WidNr==7)
         GG(5,7)=(-1)/Rth(pos);
         GG(7,5)=(-1)/Rth(pos);
     elseif pos == find(WidNr==13)
         GG(5,13)=(-1)/Rth(pos);
         GG(13,5)=(-1)/Rth(pos);
     elseif pos == find(WidNr==7)
         GG(6,7)=(-1)/Rth(pos);
         GG(7,6)=(-1)/Rth(pos);
     elseif pos == find(WidNr==11)
         GG(6,11)=(-1)/Rth(pos);
         GG(11,6)=(-1)/Rth(pos);
     
     end
end

nun gibt mir Matlab aber eine Fehlermeldung aus :
Code:
Error using  ==
Matrix dimensions must agree.

Error in leitWM (line 20)
     elseif pos == find(WidNr==10)

ich dachte aber mit find(...) bekomme ich einen Zahlenwert, und somit werden hier einfach nur Zahlenwerte verglichen? Ich kann mir den Error nicht so ganz erklären...
Über Hilfe freue ich mich.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 10.05.2017, 19:28     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Nach wie vor habe ich die 3 Vektoren bspw: Rth=(1000;3;7;9) KnNr=(1;1;1;2) und WidNr=(15;2;5;16)
Zitat:
die der des obigen Links entspricht.

... und nach wie vor weiß ich nicht, wie das komplette (!) Ergebnis letztlich aussehen soll.

welchen Links? Du hast zwei gepostet, und für mich ist der Bezug zwischen den Informationen wie gesagt nicht klar.

Die Ursache der Fehlermeldung kannst du mit Hilfe des Debuggers leicht herausfinden: wenn einer der Vektoren leer ist (also nichts gefunden wurde), schlägt == fehl.

Zitat:
Auf der Hauptdiagonalen die Summe über die Leitwerte der Rth-Werte, die am jeweiligen Knoten stehen Bsp: Am Knoten 1 sind die Widerstände 15, 2, 5 -->position der Leitwertsumme in der neuen Matrix GG : Code: GG(1,1) = 1000+3+7

In deinem zweiten Link werden aber die Kehrwerte genommen?

Hier ein Versuch, diese Formel nachzuprogrammieren. Ich hoffe, dass es das ist, was du möchtest.
Code:
Rth=[1000;3;7;9];
KnNr=[1;1;1;2];
WidNr=[15;2;5;16];
R = zeros(max([WidNr; KnNr]));
R(1:max(KnNr), 1:max(WidNr)) = full(sparse(KnNr, WidNr, 1./Rth));

R = R + R';
D = sum(R, 2);
R2 = -R + diag(D);


Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
lmatias
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 08.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.05.2017, 13:33     Titel:
  Antworten mit Zitat      
Hi Harald,

danke, hat mir sehr geholfen.

Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.