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

Einzlene Werte über GUI Button in .m files ändern

 

joggel.v
Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 07.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.12.2010, 12:14     Titel: Einzlene Werte über GUI Button in .m files ändern
  Antworten mit Zitat      
Hallo,
habe ein Programm für eine Waermeberechnung vorliegen. Mein .run file greift auf verschiedene .m files zu, in welchen verschiedene Werte als Variablen deklariert sind.

Kann ich ein GUI so schreiben dass ich einen Wert in einem .m file darüber ändern kann. Habe mir ein "edit text" Feld überlegt.

kann ich dann nicht über get.handles(variable1) oder ähnlich vorgehen, die zu ändernde Variable aussuchen und dann über set.handles überschreiben?

Danke im Voraus
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_
Moderator

Moderator


Beiträge: 537
Anmeldedatum: 08.12.10
Wohnort: ---
Version: 7.10, 2010a
     Beitrag Verfasst am: 10.12.2010, 13:59     Titel:
  Antworten mit Zitat      
Hallo joggel,
also ich bin mir nicht sicher, aber ich glaube nicht, dass du den hartcodierten Wert einer Variablen im Quellcode mit get.handles(variable1) oder ähnlichem verändern kannst.

Dazu müsstest du das m-File einlesen und dann über
Code:

den Wert ändern und wieder ins m-File schreiben.
_________________

Gruß
Peter
_________________
goMatlab-Knigge - dran gehalten?!
Schon in den FAQ gesucht? Oder der MATLAB Hilfe?
Ist vielleicht bei den Skripten oder den Tutorials was für dich dabei?
Private Nachricht senden Benutzer-Profile anzeigen
 
joggel.v
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 26
Anmeldedatum: 07.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.12.2010, 08:49     Titel:
  Antworten mit Zitat      
Hallo _Peter_:
vielen dank für deinen Tip. Bin jedoch Matlab Nueling und würde daher gerne wissen wie genau ich ein m file einlese, die variable ändere und wieder in ein m file packe.

Habe folgende files:

> waerme_dat.m - enthält viele variablen wie z.B der masse m
> waerme_P.m - enthält die Leistungsdaten
> waerme_dgl.m - Differentialgleichungen
> waerme_run.m - hier läuft der eig. ode23 solver ab welcher wiederum auf _dat _dgl und _p zugreift.

Meine Aufgabe ist nun eine GUI Maske zu erstellen in dereinzelene Werte in waerme_P.m und waerme_dat.m geändert werden können. Die warme_run.m Rechnung soll dann über einen Run Button gestartet werden.
Wie könnte ich hier generell vorgehen. Der Befehl assignin und globale Variable sind nach forums und google recherche aufgekommen.

Vielen Dank
Jörg
Private Nachricht senden Benutzer-Profile anzeigen
 
domafz00
Forum-Newbie

Forum-Newbie


Beiträge: 9
Anmeldedatum: 01.12.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 14.12.2010, 15:38     Titel:
  Antworten mit Zitat      
Hi,

ich habe ähnliches vor. Ich habe einen Steuer-File.m. Über diesen Steuerfile rufe ich andere .m- Files auf. Inden diversen .m- Files sowie im Steuerfile sollten vor beginn der Simulation einige Einstellungen vom Benutzer vorgenommen werden um nur die gewünschte Simulation auszuführen.

Bei den Änderungen handelt es sich z.B. um Änderungen von Schleifendurchlaufanzahl,die größe eines Vektors oder welche .m- Files aufgerufen werden sollen.

Hier das Steuerfile:


Code:

%--------------------------------------------------------------------------
clc;clear all;
%delete *.mat;
%--------------------------Load Fahrzeugparameter--------------------------

define_parfzg;    % Ausgangsparameter konventionelles Fahrzeug

%-----------------------Vektor-der-ungefederten-Radmasse-------------------

% mr_=[46 60 80];           % 46.5 kg Referenz, 60 kg eCID, 80 kgDirektantrieb

% mr_=[24 62];              % Mietschkewerte-für-validierung->erg_matrix
% muss im file erg_matrix_2.m händisch geändert werden
mr_=[46 80];              % Extremwerte

%-----------------------Simulationsparameter-------------------------------

TS = 0.0005;           % Sample Time wichtig für den file plotfreq_2_massen.m
% fend=60;    % Endwert der Sweepanregung.Um Achsenskallierung der Plotfiles schneller zu variieren
% z=0;

%----------------------------- Anregungsfälle------------------------------

for Anregung=1:1        % von Sweep(1) bis FB(3)

    define_man;     %load Anregungsfall-----%(1=Sweep=sw, 2=Stepup=sw, 3=FB Profil=sw)

    for l = 1:length(mr_)    %Automatische Variation der ungefederten Radmasse mr


        mr = mr_(l) ;    % Vector der ungefederten Masse

        %-------------------------Anpassung der Parameter------------------
        %       ca=(((2*pi*fer)^2)*mr)-cr;               % angepasste Federsteifigkeit des
        %       cr=(wer^2*mr)-ca;                      % angepasste Federsteifigkeit des Reifens
        %       kr=(2*(ca+cr)*Drr)/wer;                % Berechnung Reifendämpfung über angenommenes Teildämpfungsmaß des Reifens [-]
        fertest=(sqrt((ca+cr)/mr))/(2*pi);          % Eigenfrequenz Reifen

        featest=(sqrt(((ca*cr)/(ca+cr))/ma))/(2*pi);     % Eigenfrequenz Aufbau wird aus Genauigkeitsgründen mit ceff=((ca*cr)/(ca+cr)) berechnet
        % da sonst die
        % Frequenz um mehrere
        % Herz abweichen kann

        %------------------------Aufruf des Simulationsmodells-------------

        sim('zweimassenschwinger_aktuell'); %Simulinkmodell wird aufgerufen und simuliert


        %------------Zuweisung der Structur-Werte zu einer Masse-----------

        legname = ['mr = ', num2str(mr,'%4.1f'),' kg'];

        x(l).fer = fer;         %Eigenradfrequenz
        x(l).fea= fea;          %Eigenaufbaufrequenz
        x(l).sww = sw;          %Anregungsfall
        x(l).leg = legname;     %Legende
        x(l).mr = mr;           %Aktuelle Masse
        x(l).cr = cr;           %FedersteifigkeitReifen
        x(l).ca = ca;           %FedersteifigkeitReifen
        x(l).kr = kr;           %Dämpferwert
        x(l).t = t;             %Zeit über welche geplottet wird
        x(l).a_auf = a_auf;     %Vertikalbeschleunigung Aufbau
        x(l).a_rad = a_rad;     %Vertikalbeschleunigung Rad
        x(l).f_ca = f_ca;       %Federkraft Aufbau
        x(l).f_ka = f_ka;       %Dämpferkraft Aufbau
        x(l).s_auf = s_auf;     %Weg vertikal Aufbau
        x(l).s_ca = s_ca;       %Weg vertikal Feder Aufbau
        x(l).s_er = s_er;       %Weg vertikal Strassenerregung
        x(l).s_ka = s_ka;       %Weg vertikal Dämpfer Aufbau
        x(l).s_rad = s_rad;     %Weg vertikal Rad
        x(l).F_N = F_N;         %Radaufstandskraft
        x(l).v_er = v_er;       %Geschwindigkeit Erregung
        x(l).TS = TS;           %Sample Zeit


        %------------------------Strukt-Werte Sweep------------------------

        if x(l).sww==1;      % Anregung Sweep

            teilergebnis1 = ['erg1_',num2str(x(l).mr,'%3.0f')];  %bilde Ergebnisname erg_...

            fname_prefix = 'Zweimassen_1_mr_';
            fname = [fname_prefix,num2str(x(l).mr,'%4.1f'),'_kg'];

            eval([teilergebnis1 ' =  x(l)']);clear x(l);  %weise erg_...den aktuellen Inhalt von Struct x zu
            eval(['save ' fname '.mat ' teilergebnis1]);  %Ergebnisse werden in ein Matfile gespeichert

        end

        %------------------------Strukt- Werte StepUp- Anregung------------
        if x(l).sww==2;      % Anregung StepUp (Sprung)

            teilergebnis2 = ['erg2_',num2str(x(l).mr,'%3.0f')];     %bilde Name erg_...

            fname_prefix = 'Zweimassen_2_mr_';
            fname = [fname_prefix,num2str(x(l).mr,'%4.1f'),'_kg'];

            eval([teilergebnis2 ' =  x(l)']); clear x(l);        %weise erg_... den aktuellen Inhalt von Struct x zu
            eval(['save ' fname '.mat ' teilergebnis2]);

        end

        %------------------------Strukt- Werte FB- Anregung----------------
        if x(l).sww==3;

            teilergebnis3 = ['erg3_',num2str(x(l).mr,'%3.0f')];     %bilde Name erg_...

            fname_prefix = 'Zweimassen_3_mr_';
            fname = [fname_prefix,num2str(x(l).mr,'%4.1f'),'_kg'];

            eval([teilergebnis3 ' =  x(l)']); clear x(l);          %weise erg_... den aktuellen Inhalt von Struct x zu
            eval(['save ' fname '.mat ' teilergebnis3]);

        end

    end                   % Schleife für Variable mr

end

%------------------Aufruf-der-Plot-Files-----------------------------------

% plotfreq_2_massen;
% plotzeit_2_massen;     %Aufruf Plots im Zeitverlauf



Das ist das Steuerfile:

Hier sollte der Benutzer z.B. for Anregung=1:1 ändern können statt 1:1 nach1:2 oder 1:3.

Unter 'Anpassung der Parameter' sollte gewählt werden können ob ca,cr oder kr angepasst werden sollen also nicht auskommentiert sein sollen.

Und auch in anderen Files wie z.B. define_man ganz oben sollten Änderungen für if- Bedingungen möglich sein.



Wie kann dafür Grundsetzlich ein GUI aufbauen.


Gruß Dominik
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 14.12.2010, 17:03     Titel:
  Antworten mit Zitat      
Hallo joggel.v,

also dies geht z.B. prinzipiell so (bitte verzichte auf assignin oder globale Variablen, Gruende hierfuer-->siehe Posts von Jan S):

Wir wollen den Wert der Variablen P ueber ein Edit Feld aendern und anschliessend die Berechnung mit Hilfe eines Pushbutton starten, wobei die aufzurufende Funktion, nennen wir sie "Summe", mit dem neuen Wert der Variable P gestartet werden soll. Die function Summe rechnet lediglich P+P und gibt das Ergebnis zurueck.
Code:

function [output] = Summe(datain)
output = datain+datain; % wenn wir die function mit P aufrufen, dann waere es output = Wert von P + Wert von P
 

Code:

% Creation function deines GUIS
handles.P = 0; % Initialisieung der Variablen P


% Callback des Buttons
handles.P = str2double(get(handles.edit1,'String')); % edit1 ist der tag des Edit Feldes, wo der Wert der Variablen P eingegeben wird. Hier wird somit handles.P mit dem Wert aus dem Edit Feldes aktualisiert.

[result] = Summe(P); % Aufruf der function Summe mit dem aktualisierten Wert der Variable P und Rueckgabe des Ergebnisses als Variable "result"

guidata(hObject,handles); % dieser Befehl speichert den neuen Wert von handles.P in der handlesstruktur des GUIs == Aktualisierung der handles Struktur des GUIs
 



MFG

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