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

Variablen einer Gleichung ändern

 

ZeroLab
Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.10.2012, 13:25     Titel: Variablen einer Gleichung ändern
  Antworten mit Zitat      
Hi Leute,

ich habe für meine Abschlußarbeit ein Matlab Programm bekommen, welches viele Variablen enthält, die ich selber vorgben muss. Jetzt will ich schauen was passiert, wenn ich nur einen Parameter ändere, während die anderen gleich bleieben.
Ich gebe am besten ein Beispiel: "dsn = ((ksn * di * D) / Ng)^0.5;" Hier will ich, dass "dsn" berechnet wird. Dabei sollen alle Werten vorgegeben sein, außer "Ng". Dieser soll von 5 bis 10 in 1er Schritten eingesetzt werden. Vermutlich muss ich eine for-Schleife in den Quell-code einbauen, bin mir aber nicht sicher wie ich da am besten vorgehe. Vielleicht gibt es auch eine einfachere Lösung. Ich danke euch allen schon mal im Voraus für eure Vorschläge.

Beste Grüße.
Private Nachricht senden Benutzer-Profile anzeigen


evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 17.10.2012, 19:02     Titel:
  Antworten mit Zitat      
Hallo,

du kannst für NG einen Vektor anlegen
Code:
NG=5:1:10;

und dann die Gleichung ausführen.
Code:

dsn = ((ksn * di * D) / Ng).^0.5;
 


dsn wird dann automatisch ein Vektor der Länge (1,5). Wichtig ist, dass du die Potenz mit . ausführst, damit die Operation elementweise passiert.

Viele Grüße
Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
ZeroLab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2012, 13:10     Titel:
  Antworten mit Zitat      
Vielen Dank für die Antwort. Ng funktionier nicht als Zeilenvektor, da eine Division in der Gleichung ist, aber in einer Spalte nimmt Matlab die Zahlen an. Jetzt habe ich bei der Ausgabe ein Problem. Es kommt so raus:
Code:

dsn:    0           0           0           0           0      3.2955 mm
 

Der verwendete Befehl ist:
Code:

disp(['dsn:    ', num2str(dsn), ' mm']);
 

Muss ich an dem Ausgabebefehl was ändern oder doch in der Gleichung?
Code:

dsn = ((ksn * di * D) / Ng).^0.5;
 

(so sieht die jetzt aus).
Private Nachricht senden Benutzer-Profile anzeigen
 
evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 18.10.2012, 15:30     Titel:
  Antworten mit Zitat      
Zitat:

Ng funktionier nicht als Zeilenvektor, da eine Division in der Gleichung ist

Das bezweifle ich, dass Matlab damit ein Problem hat.
Du musst die Formel anpassen, damit es klappt.
Code:

dsn = ((ksn * di * D). / Ng(:,1)).^0.5;
 

Wie sehen denn die Werte von dsn aus?

Viele Grüße
Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
ZeroLab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 18.10.2012, 19:09     Titel:
  Antworten mit Zitat      
Das Ergebnis aus der Berechnung habe ich ich oben hingeschrieben:
Code:

dsn:    0           0           0           0           0      3.2955 mm
 

Das kommt raus wenn ich für Ng
Code:
x=[5;6;7;8;9;10]
einsetze. Und bei den weiteren Gleichungen kommen Werte raus, ich weiß nicht ob die stimmen, ist aber zumindest nicht Null.

Wenn ich für Ng aber
Code:
einsetze kommt
Code:

Error using  /
Matrix dimensions must agree.

Error in HyER_test (line 193)
dsn = ((ksn * di * D) / Ng).^0.5;
 

Vielen Dank für deine Hilfe. Ich hatte bis jetzt nicht viel mit Matlab zu tun und da dieses Programm, das ich ichbenutze, von jemand Anderem geschrieben wurde ist es noch etwas schwieriger.

Beste Grüße.
Private Nachricht senden Benutzer-Profile anzeigen
 
evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 18.10.2012, 20:18     Titel:
  Antworten mit Zitat      
Hallo,

anbei ein Beispiel mit Ng als Zeilenvektor. Hat eben mir funktioniert.

Code:

Ng=[5:1:10]';
dsn = ((ksn * di * D). / Ng(:,1)).^0.5;
 


Was stimmt denn nicht bei Ausgabe mit disp()?

Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
ZeroLab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 20.10.2012, 13:34     Titel:
  Antworten mit Zitat      
Also ich habe den Teil des Programms in eine separaten Datei copiert. Es sieht so aus:
Code:

Ng=[5:1:10]';
ksn = 0.1;
D = 30;
di=7;
dsn = ((ksn * di * D) / Ng(:,1)).^0.5;  
disp(['dsn=    ', num2str(dsn)]);
 

Das angezeigte Ergebnis ist:
Code:
dsn=    0           0           0           0           0      1.4491

Was aber eben nicht stimmt. Ich möchte ja, dass die Zahlen von 5 bis 10 eiesetzt werden und das richtige Ergebnis angezeigt wird:
Code:
dsn=    2.0494    1.8708    1.7321   1.6202   1.5275   1.4491

Ja das habe ich jetzt gerechnet indem ich Ng von Hand geändert habe. Ich will das aber nicht für die Anderen Rechnungen machen, weil die nicht mehr so einfach (bzw. so wenige) Zahlen haben.
Private Nachricht senden Benutzer-Profile anzeigen
 
evil2106
Forum-Anfänger

Forum-Anfänger


Beiträge: 31
Anmeldedatum: 11.10.12
Wohnort: Rostock
Version: 2012b
     Beitrag Verfasst am: 21.10.2012, 17:11     Titel:
  Antworten mit Zitat      
Hallo,

du muss
Code:

dsn=sqrt((ksn * di * D) ./ Ng(:,1))
 

damit die Operation Elementweise geschieht.

Christof
Private Nachricht senden Benutzer-Profile anzeigen
 
ZeroLab
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 5
Anmeldedatum: 17.10.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.10.2012, 19:46     Titel:
  Antworten mit Zitat      
Vielen Dank für die Hilfe. Es funktioniert jetzt alles.

Beste 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 - 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.