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 Werte zuweisen

 

ExxE
Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.03.12
Wohnort: Wien
Version: R2010b
     Beitrag Verfasst am: 19.03.2012, 17:41     Titel: Variablen Werte zuweisen
  Antworten mit Zitat      
Hallo

Ich habe folgendes Problem.

Ich berechne in einem separatem m-File symbolisch einen Vektor und rufe ihn im Eingabe File mittels "funktion" auf.
Nach dem "function" Befehl weise ich dem Vektor die Werte im Eingabe File zu.
Hier der Auszug aus dem Eingabe File:

............
Code:
clc;
clear;
 
syms phi1r phi1l h lK lO lU lFB lS1 lS2 lS3 lS4 DB m1 m2 m3 m4
 
[hr2Strich,hl2Strich]=Proj_Lagevektor2(phi1r,h,lK,lO,lU,lFB,lS1,lS2,lS3,lS4,DB,m3,m4)
 
% Längen
 
h=80;                                       %Höhe Sattelrohr
lK=20;                                      %Länge Tretkurbel
lO=50;                                      %Länge Oberschenkel
lU=55;                                      %Länge Unterschenkel
lFB=12;                                     %Fußlänge bis zum Ballen (von Ferse)
lS1=lK/2;                                   %Schwerpunkt Kurbel
lS2=lO/2;                                   %Schwerpunkt Oberschenkel
lS3=lU/2;                                   %Schwerpunkt Unterschenkel
lS4=3;                                      %Schwerpunkt Fuß
DB=(lFB^2+lU^2)^(1/2);
 
%Massen
 
m1=1;                                       %Masse einer Kurbel
m2=10;                                      %Masse Oberschenkel
m3=6;                                       %Masse Unterschenkel
m4=3;
m34=m3+m4;

..........

Das Problem ist aber das er die Werte nicht für den mittels "funktion" berechneten Vektor [hr2Strich] übernimmt, der Vektor bleibt für die weiteren Berechnungen symbolisch.

Bin schon am verzweifeln, kann mir jemand helfen? Crying or Very sad
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 19.03.2012, 23:00     Titel:
  Antworten mit Zitat      
Hallo,

um Werte einzusetzen, solltest du SUBS verwenden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.03.12
Wohnort: Wien
Version: R2010b
     Beitrag Verfasst am: 20.03.2012, 10:04     Titel:
  Antworten mit Zitat      
Danke für die Antwort.

Mit subs habe ich es schon pobiert, interessante weise funktioniert es nur teilweise!?

Zum besseren Verständniss der Code meines Eingabefiles:

Code:
clc;
clear;

syms phi1r phi1l h lK lO lU lFB lS1 lS2 lS3 lS4 DB m1 m2 m3 m4 m34

[hr2Strich,hl2Strich]=Proj_Lagevektor2(phi1r,h,lK,lO,lU,lFB,lS1,lS2,lS3,lS4,DB,m3,m4);

subs(hr2Strich,[lK,lU,lO,h,lFB,lS1,lS2,lS3,lS4,DB,m1,m2,m3,m4],[20,55,50,80,12,10,25,55,3,(12^2+55^2)^1/2,1,10,6,3])

% Längen

h=80;                                       %Höhe Sattelrohr
lK=20;                                      %Länge Tretkurbel
lO=50;                                      %Länge Oberschenkel
lU=55;                                      %Länge Unterschenkel
lFB=12;                                     %Fußlänge bis zum Ballen (von Ferse)
lS1=lK/2;                                   %Schwerpunkt Kurbel
lS2=lO/2;                                   %Schwerpunkt Oberschenkel
lS3=lU/2;                                   %Schwerpunkt Unterschenkel
lS4=3;                                      %Schwerpunkt Fuß
DB=(lFB^2+lU^2)^(1/2);

%Massen

m1=1;                                       %Masse einer Kurbel
m2=10;                                      %Masse Oberschenkel
m3=6;                                       %Masse Unterschenkel
m4=3;
m34=m3+m4;



%Erdbeschleunigung

g=9.81;

%Antriebsmoment

MA=15;

%Trägheitsmomente

I1=1;
I2=2;
I34=5;

disp('Antriebswinkel "phi1"')

phi1r=70                                    %Freiheitsgrad
phi1l=phi1r+180;

disp('Winkelgeschwindigkeit')

phiPunkt=5

disp('Zwangskräfte')

[fZr]=Proj_Zwangsraefte2(hr2Strich,phiPunkt,g,m1,m2,m34,I1,I2,I34,MA,phi1r,h,lK,lO,lU,lFB,lS1,lS2,lS3,lS4,DB,m3,m4);

subs(fZr,[lK,lU,lO,h,lFB,lS1,lS2,lS3,lS4,DB,m1,m2,m3,m4],[20,55,50,80,12,10,25,55,3,(12^2+55^2)^1/2,1,10,6,3])


Zu Beginn bei "subs(hr2Strich,..." funktioniert es, am Ende bei "subs(fZr,..." nicht, dort sind die Variablen "lK,lU,lO,h,lFB,lS1,lS2,lS3,lS4,DB,m1,m2,m3,m4" nach wie vor in der Gleichung.
Ich bin mir sicher das es etwas damit zu tun hat, dass der Vektor "hr2Strich" der auch in der "function" "fZr" verwendet wird zuvor symbolisch berechnet wird aber warum die Variablen dann in "fZr" nicht ersetzt werden verstehe ich nicht.

Vielleicht hat auch jemand eine bessere Idee wie ich das Eingabefile aufbauen kann, denn das Ersetzen der Werte mittels subs ist eigentlich auch umständlich und anfällig dafür Fehler zu machen.
Am besten wäre es wenn ich die Werte nur einmal eingeben müsste und sie würden für die gesamt Berechnung verwendet werden.

Ich bedanke mich für eure Ideen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 20.03.2012, 21:38     Titel:
  Antworten mit Zitat      
Hallo,

die von dir verwendete Notation von subs ist nicht in der Doku enthalten. Ich würde mich also an die offizielle Syntax mit {} statt [] halten, selbst wenn es funktionieren würde.

Ansonsten ist es schwierig, dir zu helfen, da man ja das Beispiel nicht nachvollziehen kann.

Die Frage wäre aber: warum rechnest du überhaupt symbolisch, wenn du am Ende doch nur Werte einsetzt?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.03.12
Wohnort: Wien
Version: R2010b
     Beitrag Verfasst am: 21.03.2012, 10:42     Titel:
  Antworten mit Zitat      
Danke für die Antwort!

Ich muss einen Vektor, in meinem Fall "hr" genannt 2 mal und eine Matrix einmal ableiten. Und das geht nur symbolisch, da die Ableitungen der Vektoren bei eingesetzten Zahlen ja 0 ergeben würden.
Nachträglich muss ich aber zur Berechnung die Werte einsetzen.

Da ich ein absoluter MATLAB Neuling bin kann sein das ich das Konzept von MATLAB falsch verstehe aber es sollte doch möglich sein einen Vektor/Matrix abzuleiten und dann die Werte einzusetzen oder?

LG, Thomas
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.500
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 21.03.2012, 20:46     Titel:
  Antworten mit Zitat      
Hallo,

Gradienten kann man auch numerisch annähern, z.B. mit
(f(x + dx) - f(x - dx)) / (2*dx) für die erste Ableitung und
(f(x + dx) + f(x - dx) - 2*f(x)) / (dx^2) für die zweite Ableitung.

Und ja, das sollte an sich möglich sein. Dein Code ist aber zulänglich als dass ich auf die Schnelle nachvollziehen könnte, wo das Problem liegt.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 24
Anmeldedatum: 19.03.12
Wohnort: Wien
Version: R2010b
     Beitrag Verfasst am: 22.03.2012, 09:29     Titel:
  Antworten mit Zitat      
Danke für die Antwort!

Es funktioniert jetzt.

Ich bin folgender maßen vorgegangen:
1. Zuweisen der Werte zu den Variablen im Eingabe File
2.Durchführen der symbolischen Berechnung in einem "function" File
2.1 In dem "function" File habe ich die Variablen erneut mit "syms" definiert
3.Ersetzen der Variablen im Eingabe File gleich nach aufrufen der "function" mittels "subs" ("Name des Vektors")

Danke noch mal für die Hilfe.
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.