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

Ausgabe im Textfeld

 

HF-SCF
Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 04.05.2009, 16:12     Titel: Ausgabe im Textfeld
  Antworten mit Zitat      
Hallo zusammen,

arbeite mich gerade in das Programmieren mit Matlab ein. Bin aber nicht so der Programmierprofi.

Habe mir ein Programm geschrieben, dass ein bischen Matrizen rotiert, Werte davon integriert und ein bischen mehr noch. Das ganze läuft unter einem Button.

In einem Textfeld möchte ich einen Wert einlesen, der eine Laufvariable x überschreibt (vereinfacht)

gleichung = a/b;
x = get(handles.edit1, 'String');
ausgabewert = gleichung;


so, aber wie gebe ich das nun in ein Textfeld aus? Funktioniert das übrigens so einfach, dass ich die Gleichung zuvor hab berechnen lassen und dass er "ausgabewert = gleichung;" mit dem Wert x = Zahl anstatt x = x berechnet?

Viele Fragen auf einmal, ich weiß, hoffe aber auf eine Antwort, die auch ich verstehen kann Smile

Viele Grüße
HF
Private Nachricht senden Benutzer-Profile anzeigen


Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.05.2009, 17:11     Titel:
  Antworten mit Zitat      
Hallo HF-SCF

Ich muss sagen, ich verstehe Deine Fragen nicht.

Also wenn Du eine Zahl aus dem editfeld bekommen willst, verwende z.B.
Code:
zahl = str2double( get( handles.edit1,  'String'));
 


Wenn Du dann wieder etwas in das editfeld reinschreiben willst, verwende
Code:
set( handles.edit1, 'String', num2str(neueZahl))


lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
HF-SCF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 04.05.2009, 20:05     Titel:
  Antworten mit Zitat      
Hallo Martin,


danke erstmal für die Antwort.

Das Programm macht in den ersten Schritten Matritzenrechnungen (Rotationen) mit symbolischen Variablen. In der ganzen Rechnung bleibt zum Schluss eine Variable übrig, nennen wir sie x.
Dieses x will ich aus dem Edit-Feld einlesen und mit diesem Wert weiter rechnen. Dieser eingelesene Wert soll nun in die berechnete Gleichung einfließen, die zuvor nur aus symbolischen Variablen bestand. Das Ergebnis des eingesetzten Wertes soll dann in einem Textfeld ausgegeben werden.

Ich hoffe, das ist nun etwas klarer ausgedrückt Smile

Viele Grüße
HF
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 07:36     Titel:
  Antworten mit Zitat      
Guten Morgen

Also ich muss sagen, dass ich mit sysmbolischen Rechnen in Matlab keine Erfahrung habe.

Wie Du eine Zahl aus einem editfeld bekommst bzw. wie Du wieder eine Zahl ins editfeld reinbringst steht oben ansatzweise beschrieben.

Um nun Deine sysmbolische Gleichung auszuwerten, musst Du Dein x mit einer Zahl substituieren.
Das funktioniert mit
Code:


Mehr weiß ich aber auch nicht dazu. sorry

lg
Martin

PS.: Meistens ist es hilfreich das betreffende Stück Quelltext mitzuposten.
Potentielle "Helfer" können sich dann ein besseres Bild über die eigentliche Frage machen.
Private Nachricht senden Benutzer-Profile anzeigen
 
HF-SCF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 05.05.2009, 08:01     Titel:
  Antworten mit Zitat      
Hallo Martin,

danke erstmal für die Antwort. Hier der Code:

Code:

% --- Executes on button press in pushbutton1.
function pushbutton2_Callback(hObject, eventdata, handles)
% hObject    handle to pushbutton1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)

syms x y a b c d e;

rotx = [1 0 0; 0 cosd(x) -sind(x); 0 sind(x) cosd(x)];
roty = [cosd(x) 0 -sind(x); 0 1 0; sind(x) 0 cosd(x)];
rotz = [cosd(x) -sind(x) 0; sind(x) cosd(x) 0; 0 0 1];

rotyx = [1 0 0; 0 cosd(y) -sind(y); 0 sind(y) cosd(y)];
rotyy = [cosd(y) 0 -sind(y); 0 1 0; sind(y) 0 cosd(y)];
rotyz = [cosd(y) -sind(y) 0; sind(y) cosd(y) 0; 0 0 1];

aroundx = rotx*B*inv(rotx);
aroundy = roty*B*inv(roty);
aroundz = rotz*B*inv(rotz);

 mittelzb1g = rotyz*aroundy*inv(rotyz);
 
 Txx = mittelzb1g(1,1);
 Txy = mittelzb1g(2,1);
 inttxx = (int(Txx^2,y,0,pi/2))*2/pi;
 inttxy = (int(Txy^2,y,0,pi/2))*2/pi;

 verhaeltnis = intb1gtxx/intb1gtxy;
 x = get( handles.edit1, 'String'); subs(x);
 ausgabeb1g = verhaeltnis;

set (handles.text10, 'String', ausgabeb1g);
 


Der wichtige Teil sind eigentlich die letzte 4 ZeilenDas Verhältnis ist das Wichtige. Es soll zuerst berechnet werden, dann soll die Zahl aus dem Editfeld eingelesen und die Gleichung "verhaeltnis" eingesetzt und ein Wert berechnet werden. Diese Zahl soll dann im Textfeld ausgeben werden.

Es sind viele Gleichungen dabei, die eigentlich an dieser Stelle nicht gebraucht werden, aber in einem anderen Abschnitt. Daher bitte nicht wundern Smile.

Viele Grüß
HF
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 08:12     Titel:
  Antworten mit Zitat      
Hallo nochmal

Was mich etwas verstört ist folgendes
Code:
...
inttxx = (int(Txx^2,y,0,pi/2))*2/pi;
inttxy = (int(Txy^2,y,0,pi/2))*2/pi;

verhaeltnis = intb1gtxx/intb1gtxy;
...


Die Variablen intb1gtxx und existieren intb1gtxy ja gar nicht. Sollen die inttxx und inttxy heißen?

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
HF-SCF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 05.05.2009, 08:17     Titel:
  Antworten mit Zitat      
äh ja, das ist ein Fehler, die hatte ich umbenannt und da wohl vergessen Smile

Ist mittlerweile korrigiert. Smile

...
inttxx = (int(Txx^2,y,0,pi/2))*2/pi;
inttxy = (int(Txy^2,y,0,pi/2))*2/pi;

verhaeltnis = inttxx/inttxy;
...
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 08:23     Titel:
  Antworten mit Zitat      
Vielleicht ersetzt Du auch sind, cosd mit sin bzw. cos.
Und "B" dürfte auch nicht definiert sein.

Wenn die Probleme oberhalb geregelt sind, dann sollte die Sache mit folgendem Code laufen (vorausgesetzt, ausgabeb1g ergibt eine Zahl):
Code:
verhaeltnis = inttxx/inttxy;
Eingabe = str2double( get( handles.edit1, 'String'));
ausgabeb1g = subs( verhaeltnis, x, Eingabe);
set( handles.edit1, 'String', num2str(ausgabeb1g))


lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
HF-SCF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 05.05.2009, 08:44     Titel:
  Antworten mit Zitat      
Hallo Martin,

vielen Dank erstmal für die Mühe, die du dir machst

Hab den cosd/sind ersetzt.
Weiterhin
Code:

 verhaeltnis = inttxx/inttxy;
 Eingabe = str2double( get( handles.edit1, 'String'));
 ausgabeb1g = subs( verhaeltnis, x, Eingabe);
 set (handles.edit3, 'String', num2str(ausgabeb1g));
 


So, er gibt nun auch etwas aus, was mich erstmal freu. Leider denkt er, dass das keine Zahl ist Smile Er sagt NaN. Woran könnte das noch liegen?
Die Übersetzung ist ja da.
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 08:51     Titel:
  Antworten mit Zitat      
Was genau gibst Du in Dein editfeld ein?

Wenn Du nämlich z.B. "x = 1" eingibst, ergibt str2double(' x = 1') "Nan"- also not a number.
Du darfst nun ausschließlich Zahlen in Dein editfeld klopfen.

Das wäre jetzt mein erster Verdacht.

lg
Martin
Private Nachricht senden Benutzer-Profile anzeigen
 
Dagnabit
Forum-Century

Forum-Century


Beiträge: 244
Anmeldedatum: 23.04.09
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.05.2009, 08:54     Titel:
  Antworten mit Zitat      
Oder meinst Du das er bei der Ausgabe Probleme macht?

Dann lass das num2str bei
Code:
set (handles.edit3, 'String', num2str(ausgabeb1g));
weg!

also
Code:
set (handles.edit3, 'String', ausgabeb1g);


Ich habs weiter oben schon erwähnt:"vorausgesetzt, ausgabeb1g ergibt eine Zahl"

Ich hoffe einer der beiden Beiträge löst Dein Problem.
Private Nachricht senden Benutzer-Profile anzeigen
 
HF-SCF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 05.05.2009, 08:57     Titel:
  Antworten mit Zitat      
Ja, er gibt bei der Ausgabe NaN aus. Die Eingabe war 0.7854 ( = pi/4 = 45°)
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 05.05.2009, 09:14     Titel:
  Antworten mit Zitat      
Moin,

nimm mal das Semikolon in dieser Zeile weg und schau mal nach was dir im CommandWindow ausgegeben wird:
Code:
ausgabeb1g = subs( verhaeltnis, x, Eingabe); % hier das ";" entfernen am Ende


Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
HF-SCF
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 18
Anmeldedatum: 04.05.09
Wohnort: ---
Version: R2009a
     Beitrag Verfasst am: 05.05.2009, 09:17     Titel:
  Antworten mit Zitat      
ausgabeb1g = NaN


Edit:

Ich hab die ganzen Befehle im Command eingegeben und es kommt die Zahl raus, die auch rauskommen soll. Es scheint also nur an der Übergabe an das Ausgabefeld zu liegen?

ausgabeb1g = subs( verhaeltnis, x, Eingabe);

liefert den richtigen Wert im Command (1,222)
Private Nachricht senden Benutzer-Profile anzeigen
 
steve
Ehrenmitglied

Ehrenmitglied



Beiträge: 2.029
Anmeldedatum: 03.09.07
Wohnort: Wien
Version: R2024a
     Beitrag Verfasst am: 05.05.2009, 09:27     Titel:
  Antworten mit Zitat      
Moin,

das heißt, es kommt keine einzelne Zahl raus?
Dann probier mal folgendes:
Code:
ausgabeb1g = subs( verhaeltnis, x, Eingabe);
ausgabe1gstr = evalc('ausgabeb1g');
 set (handles.edit3, 'String', ausgabeb1gstr);


(ungetestet)

Gruß
Alex
_________________

>> I told me to.

____________________________________
Matlab Cheat Sheet
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.