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

Gleichung mit verschiedenen Zufallswerten füttern

 

dannyh
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.03.13
Wohnort: ---
Version: R2011b (7.13.0564)
     Beitrag Verfasst am: 20.03.2013, 11:13     Titel: Gleichung mit verschiedenen Zufallswerten füttern
  Antworten mit Zitat      
Hallo,
ich bin noch nicht lange mit Matlab vertraut und komme an einer Stelle meiner Programmierung einfach nicht weiter. Ich hoffe ihr könnt mir weiterhelfen Smile

Also ich möchte mit Matlab eine Funktion erstellen, die eine Gleichung mit verschiedenen Zufallswerten für die vorhanden Variablen (zwei sind es)
füttert und jedes einzeln berechnete Ergebnis automatisch benennt (G0......Gn) und im Workspace ablegt.

Meine Gleichung sieht wie folgt aus:
Code:

Gp=Hp-T*(Sp/10^3);
 

Hp, Sp: sind meine Variablen (Einzelwerte)
T: Ein Spaltenvektor mit n-Zeilen

Gruß
dannyh
Private Nachricht senden Benutzer-Profile anzeigen


Super8film
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 13.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2013, 11:18     Titel:
  Antworten mit Zitat      
Code:


also

Code:
H=Amplitude*randn(1,Samples)

sowas in die Richtung??

randn steht für normal-verteilt meine ich.
Private Nachricht senden Benutzer-Profile anzeigen
 
dannyh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.03.13
Wohnort: ---
Version: R2011b (7.13.0564)
     Beitrag Verfasst am: 20.03.2013, 11:29     Titel:
  Antworten mit Zitat      
Danke für die schnelle Antwort,
aber mir gehts eigentlich darum, dass ich einfach nicht weiß, wie ich eine Gleichung mehrmals mit verschied. Variablen durchlaufen lassen kann wobei dann jedes Ergbeniss einzelt und mit sys. Bennenung abgespeichert wird.
Private Nachricht senden Benutzer-Profile anzeigen
 
Super8film
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 13.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2013, 11:47     Titel:
  Antworten mit Zitat      
Code:

%%Beispiel Parameter
N=100 %number of values
step=1 % 1 default, sonst was anderes abgeben
AmplitudeHp=0.4 %Amplitude des Signals HP
AmplitudeSp=1.3 %Amplitude des Signals SP
%Variablen
%T ist gegeben
Hp=AmplitudeHp*randn(Samples) ; %is nun N Groß
Sp=AmplitudeHp*randn(Samples) ; %is nun N Groß
%%
%Einfache For- Schleife
for i=1:step:100
Gp(i)=Hp(i)-T*(Sp(i)/10^3);
end
 



so im groben. Ich weiß halt nicht wirklich was Sp,Hp sind. Hoffe ich habe dein Problem richtig verstanden. Das oben ist nur ein Beispiel.

Hoffe es hilft
Private Nachricht senden Benutzer-Profile anzeigen
 
dannyh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.03.13
Wohnort: ---
Version: R2011b (7.13.0564)
     Beitrag Verfasst am: 20.03.2013, 12:39     Titel:
  Antworten mit Zitat      
ahh perfekt! Das bringt mich auf jedenfall schon Mal weiter, Danke.
Ich hab jetzt immer noch ein kleines Problem.
Also ich hab ja die Formel

Gp=Hp-T*(Sp./10^3)

Gp: Freie Enthalpie / Gibbs enthalpie
Hp: protonierungs Enthalpie
Sp: -"- Entropie
T: Temperatur

Also meine Variablen (Hp&Sp) sind jetzt Spaltenvektoren mit z.B. 100 Zeilen.
Meine Temperatur ist aber ebenfalls ein Spaltenvektor mit 87 Zeilen (extern eingelesene Messdaten). Meine Frage wäre jetzt, wie sage ich Matlab, dass ich immer nur Zeile für Zeile (sprich immer nur ein Wert) meiner Variablen benutzen will, um die Gleichung zu berechnen und somit mehrere Ergebnisse für Gp zu erhalten.
Mit der Funktion elementweise geht es leider nicht Very Happy.
Ich hoffe ich habe mich verständlich ausgedrückt ^^
Private Nachricht senden Benutzer-Profile anzeigen
 
Super8film
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 57
Anmeldedatum: 13.06.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.03.2013, 12:50     Titel:
  Antworten mit Zitat      
Code:
%%Beispiel Parameter
N=100 %number of values
step=1 % 1 default, sonst was anderes abgeben
AmplitudeHp=0.4 %Amplitude des Signals HP
AmplitudeSp=1.3 %Amplitude des Signals SP
%Variablen
%T ist gegeben
Hp=AmplitudeHp*randn(Samples) ; %is nun N Groß
Sp=AmplitudeHp*randn(Samples) ; %is nun N Groß

%%
%Einfache For- Schleife
for i=1:step:100
   %Neuer Wert für Hp,Sp
   for j= 1:size(T)
   %Gp in Abhängigkeit der Temperaturen
   Gp(i,j)=Hp(i)-T(j)*(Sp(i)/10^3);
   end
end
 


meinst du sowas?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

du könntest z.B. die Ergebnisse in verschiedene Spalten von Gp ablegen:

Code:


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

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.03.13
Wohnort: ---
Version: R2011b (7.13.0564)
     Beitrag Verfasst am: 20.03.2013, 13:42     Titel:
  Antworten mit Zitat      
jaaaa es klappt!
Dankeschön !
Private Nachricht senden Benutzer-Profile anzeigen
 
dannyh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.03.13
Wohnort: ---
Version: R2011b (7.13.0564)
     Beitrag Verfasst am: 22.03.2013, 12:11     Titel: Hilfffeeee
  Antworten mit Zitat      
Ich verstehe nicht, warum Matlab diese Funktion nicht ausführt !
Genau so eine ähnliche Funktion habe ich ein paar Zeilen vorher mit den selben dimensionen ausgeführt. Ich versteh es nicht.

Code:

for y=1:1:1000 %Spalte durch gehen
for z=1:1:87%Reihe durch gehen

Volmen_HCL(z,y)=N(z)-[N(z)./pKAA2(y)]

end
end
 


N ist eine Spaltenvektor mit 87 Zeilen
pKAA2 ist eine Matrix mit 87x1000
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 22.03.2013, 12:47     Titel:
  Antworten mit Zitat      
Hallo,

vermutlich möchtest du

Code:
in Wirklichkeit an der Stelle
Code:
pKAA2(z,y)
auslesen.

Beste Grüße,
Nras
Private Nachricht senden Benutzer-Profile anzeigen
 
dannyh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.03.13
Wohnort: ---
Version: R2011b (7.13.0564)
     Beitrag Verfasst am: 22.03.2013, 12:54     Titel:
  Antworten mit Zitat      
Neee,
ich wollte eigentlich alle Zeilen von dem Spaltenvektor N mit jeder von den 1000 Spalten von pKAA2 dividieren. Und so müsste das eignetlich stimmen. Aber matlab macht es einfach nicht. Er berechnet schon was aber es sind nicht die korrekten Ergebnisse. Die Formel es so richtig. Excel liefert die richtigen Ergebnisse ... Matlab komischerweise nicht.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 22.03.2013, 12:57     Titel:
  Antworten mit Zitat      
Hallo,

dann versuchst du vermutlich, einem Eintrag in deiner Matrix Volumen_HCL(z,y) nicht nur einen Skalar, sondern einen ganzen Vektor zuzuweisen. Das Ergebnis deiner Operation ist nämlich ein Vektor.

Was kommt für eine Fehlermeldung?

Edit. Tut mir Leid, ich habe gelogen. Das Ergebnis ist vermutlich doch nur ein Skalar. Aber von pKAA2 wird nie die gesamte Matrix ausgelesen, du bleibst immer bei den ersten 1000 Werten.
Private Nachricht senden Benutzer-Profile anzeigen
 
dannyh
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 20.03.13
Wohnort: ---
Version: R2011b (7.13.0564)
     Beitrag Verfasst am: 22.03.2013, 14:02     Titel:
  Antworten mit Zitat      
Es kommt keine Fehlermeldung. MAtlab gibt einfach nicht das richtige Ergebnis aus.
Also VHCLt ist eine Matrix, (78x1000) die aus den 1000 einzelnen Berechnungen der Spaltenvektoren erzeugt wird.

Zwei Berechnugnen davor hat es ja auch noch geklappt;
Code:

for j=1:1:1000
K(:,j)=exp(-Gp(:,j)./TR)
end
 


Gp: Matrix 87x1000
TR: Spaltenvektor mit 87 Zeilen

Ob ich das jetzt mit zwei Schleifen machen oder so wie hier ist ja egal.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 22.03.2013, 14:31     Titel:
  Antworten mit Zitat      
Hallo,

wie gesagt, bei deiner Matrix pKAA2 verlässt du nie die erste Spalte.
mit

Code:

for z = 1:87
    for y = 1:1000
        pKAA2(y)
    end
end
 


siehst du dir bloß 87 mal die erste Spalte der 87x1000 Matrix an. Versuch bitte, ob Du wirklich nicht
Code:
pKAA2(z,y)
meinst.

Viele Grüße.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


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

wenn ich das richtig verstehe:

Zitat:
mit jeder von den 1000 Spalten von pKAA2 dividieren


Dann musst du auch Spalten von pKAA2 auslesen, nicht einzelne Elemente.
Code:
pKAA2(:, y)

Was dann herauskommt, ist logischerweise auch eine Ergebnisspalte. Das muss dann aber auch in eine Spalte der Ergebnismatrix geschrieben werden.

Zitat:
MATLAB gibt einfach nicht das richtige Ergebnis aus.

Das ist bei den meisten Programmen so, wenn man sie mit dem falschen Code füttert ;)

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.