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

Überschreibung von Variablen in for schleifen verhindern

 

McKe

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2013, 13:26     Titel: Überschreibung von Variablen in for schleifen verhindern
  Antworten mit Zitat      
Hallo liebes Forum,

ich habe eine Anzahl von bauelementen R,L und C in einer Schaltung.
Ich möchte die Schaltung durchlaufen und die gleichung von jedem Bauelement ausgeben.
Gibt´s denn eine syntax in Matlab die das machen kannst? In meiner Code, wird immer die Werte überschrieben sodass nur jeweils eine Gleichung für jeden bauelement ausgeggeben wird.
Ich möchte wenn es mehrere U_R gibt, dass alle gleichungen ausgegeben werden zum beispiel :
U_R1 = R*i1
U_R2 = R*i2.... usw
Code:
for i = 1:numElem
   
    if(strncmp(Element(i).Name,'R',1))
       
        numR = numR +1;
        U_R = [Element(i).Name,'*i'];
       
    elseif(strncmp(Element(i).Name,'L',1))
       
        numL = numL + 1;
        U_L = [Element(i).Name,'*di/dt'];
       
    elseif(strncmp(Element(i).Name,'C',1))
       
        numC = numC + 1;
        I1 = [Element(i).Name,'*dUC/dt'];
    end
   
end


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.06.2013, 15:47     Titel:
  Antworten mit Zitat      
Hallo,

da U_R anscheinend Strings sind, würde ich ein Cell Array empfehlen

Code:
U_R = cell(1,numElem);
for ...
U_R{i} = ...
end
 

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2013, 16:10     Titel:
  Antworten mit Zitat      
Hi,
vielen dank für deine Antwort. Ja momentan ist U_R ein String aber ich muss danach eine symbolische Berechnung und mit Werte durchführen können, wäre das mit den cell-arrays möglich?
Ich merke gerade mit den cellen , wenn ich nur ein U_R habe dann sind die anderen Element der celle durch null gesetzt.
Meinst du die folgende Code?
Code:

% Preallokierung
U_R = cell(1,numElem);
U_L = cell(1,numElem);
I     = cell(1,numElem);

for i = 1:numElem
   
    if(strncmp(Element(i).Name,'R',1))
       
        numR = numR +1;
        U_R = [Element(i).Name,'*i'];
       
    elseif(strncmp(Element(i).Name,'L',1))
       
        numL = numL + 1;
        U_L = [Element(i).Name,'*di/dt'];
       
    elseif(strncmp(Element(i).Name,'C',1))
       
        numC = numC + 1;
        I1 = [Element(i).Name,'*dUC/dt'];
    end
   
end
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.06.2013, 16:47     Titel:
  Antworten mit Zitat      
Hallo,

bei dir fehlt der Schleifenindex. Ich sehe gerade, dass es wohl günstiger ist, numR als Schleifenindex zu verwenden.
Nein, man kann mit cells nicht rechnen. Damit man dir da mehr helfen kann, müsstest du mehr darüber sagen, wie die symbolischen Rechnungen aussehen sollen.

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

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.06.2013, 17:00     Titel:
  Antworten mit Zitat      
hi,
sorry ich habe die Schleifenindex vergessen
Code:
U_R = cell(1,numElem);
U_L = cell(1,numElem);
I     = cell(1,numElem);

for i = 1:numElem
   
    if(strncmp(Element(i).Name,'R',1))
       
        numR = numR +1;
        U_R{i} = [Element(i).Name,'*i'];
       
    elseif(strncmp(Element(i).Name,'L',1))
       
        numL = numL + 1;
        U_L{i} = [Element(i).Name,'*di/dt'];
       
    elseif(strncmp(Element(i).Name,'C',1))
       
        numC = numC + 1;
        I1{i} = [Element(i).Name,'*dUC/dt'];
    end
   
end


Wie du es gerade erwähnt hast, ich kann nicht mit den cellen rechnen.
Ich sollte aber die Schaltung anhang der netzlist(siehe unten) und die Bauelemente Gleichungen symbolisch und numerisch berechnen und genauso für die Maschengleichungen.

Also wenn wir nicht mit cell-arrays berechnen können, was wäre´s die andere Möglicckeit?

source BEISPIEL4_10
L_L1 1 2 10uH
R_R1 3 2 6k
C_C1 0 3 370pF
V_Vein 1 0 50Vdc
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 08.06.2013, 18:13     Titel:
  Antworten mit Zitat      
Hallo.

wie gerade gesagt:
Zitat:
Ich sehe gerade, dass es wohl günstiger ist, numR als Schleifenindex zu verwenden.

(bzw. die anderen "num"-Variablen)

Wie du dir das mit den symbolischen Berechnungen vorstellst, weiß ich nun immer noch nicht.

Grüße,
Harald
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 - 2025 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.