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

mehrere Simulink modelle mit einer GUI öffnen.

 

guguli
Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 08:27     Titel: mehrere Simulink modelle mit einer GUI öffnen.
  Antworten mit Zitat      
Hallo zusammen,

CIh möchte meinem GUI so umschreiben dass ich wenn auf ein Button klicke ein bestimmtes Modell geöffnet wird, und dem entsprechen wenn ich irgend welche werte da einsetze dann di werden nur für das model übernommen.

Also wie ein Modell geöffnet wird und wie die werte eingesetzt werden kann, kann ich schon machen, aber nur für ein Modell.

Also ich hb das mit radio Button so gemacht.
Code:
function Bone_SelectionChangeFcn(hObject, eventdata, handles)
if hObject == handles.Skull
    load_system('Skull')
   
    set_param('Skull/Steifigkeit/flaeche','f',...
                            get(handles.flaeche,'String'))
else if hObject == handles.Femur
        load_system('Femur')
     
        set_param('Femur/Steifigkeit/flaeche','f',...
                            get(handles.flaeche,'String'))
    end
       
end

So kann ich mehrere Modelle öffnen. Aber wie geht das mit den werten????

THX
Private Nachricht senden Benutzer-Profile anzeigen


Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 29.07.2013, 08:54     Titel: Re: mehrere Simulink modelle mit einer GUI öffnen.
  Antworten mit Zitat      
guguli hat Folgendes geschrieben:

Code:
function Bone_SelectionChangeFcn(hObject, eventdata, handles)
if hObject == handles.Skull
    load_system('Skull')
   
    set_param('Skull/Steifigkeit/flaeche','f',...
                            get(handles.flaeche,'String'))
else if hObject == handles.Femur
        load_system('Femur')
     
        set_param('Femur/Steifigkeit/flaeche','f',...
                            get(handles.flaeche,'String'))
    end
       
end

So kann ich mehrere Modelle öffnen. Aber wie geht das mit den werten????


Was genau paßt denn nicht? Kommt eine Fehlermeldung?
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 09:09     Titel:
  Antworten mit Zitat      
ja und zwar :
Error using MainGui>Bone_SelectionChangeFcn
Too many input arguments.

Error in gui_mainfcn (line 96)
feval(varargin{:});

Error in MainGui (line 19)
gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)MainGui('Bone_SelectionChangeFcn',get(hObject,'SelectedObject'),eventdata,guidata(get(hObject,'SelectedObject')))


Error in hgfeval (line 63)
feval(fcn{1},varargin{:},fcn{2:end});

Error in uitools.uibuttongroup/childAddedCbk>manageButtons (line 80)
hgfeval(cbk, source, evdata);

Error while evaluating uicontrol Callback
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 29.07.2013, 09:14     Titel:
  Antworten mit Zitat      
Dann setz doch bitte mal einen Breakpoint an der Stelle, wo du set_param machst. Und ließ dort aus, was überhaupt in
Code:
get(handles.flaeche,'String')

steht.
Klingt für mich so, als sei das nicht nur ein einzelner String.
(Alternativ schreibe get(handles.flaeche,'String') direkt nach dem laden des Systems, setze Breakpoint trotzdem auf set_param, und schau, was dir im Commandwindow angegeben wird.)
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 09:47     Titel:
  Antworten mit Zitat      
Hab
Code:
 set_param('Skull/Steifigkeit/flaeche','f',...
                            get(handles.flaeche,'String'))
komplett weg gemahct. kommt trozdem die Fehler meldung.
hab jetzt nur das :
Code:
function Bone_SelectionChangeFcn(hObject, handles)
if hObject == handles.Skull
    load_system('Skull')
    open_system('Skull');        
   
else if hObject == handles.Femur
        load_system('Femur')
        open_system('Femur');
     
       
    end
end
       
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 29.07.2013, 10:02     Titel:
  Antworten mit Zitat      
Da du kein Lauffähriges Minimalbeispiel erstellen kannst, musst du bitte mehr mit Breakpoints und selber suchen arbeiten - ich kann da nur raten.

Gib doch bitte mal
Code:

ein.
und wenn er in den Fehler läuft, schau dir an, an welcher Stelle genau und schau, was in den Variablen dort so drinne steht.
ich könnte mir vorstellen, dass hObject == handles.Femur nicht geht.
Was steht in hObjekt, was in handles.Femur? ... einfach mal schauen, vergleichen,...
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 10:06     Titel:
  Antworten mit Zitat      
ok, hab das jetzt neu geschrieben, jetzt funktioniert es.
Ich kann jetzt verschiedene Modelle auf machen.

Nun möchte ich nach dem ich ein Modell ausgewählt habe, mit set_param nur die Konstanten deises Modelles ändere. Also ich hab ein Slider, womit ich die werte ändern kann.
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 10:19     Titel:
  Antworten mit Zitat      
Also ich muss sowas ähnliches formulieren.

set_param( setze den Wert vom Slider in das geöffneten Modell)

Weisste wie ich das meine????
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 29.07.2013, 10:56     Titel:
  Antworten mit Zitat      
guguli hat Folgendes geschrieben:
Also ich muss sowas ähnliches formulieren.

set_param( setze den Wert vom Slider in das geöffneten Modell)

Weisste wie ich das meine????


Jein.
Ich vermute, dir fehlt das wissen, wie man auf was zugreift.
Code:
set_param('Femur/Steifigkeit/flaeche','f',get(handles.flaeche,'String'))

Was ist denn Femur/Steifigkeit/flaeche für ein block? In welches Feld soll denn der Wert aus get(handles.flaeche,'String') eingetragen werden? Denn ein Feld/Option mit Namen "f" kann ich mir gerade nur schwer vorstellen.

Ließ dich einfach nochmal in der Hilfe zu set_param nach und schau, welche Block-eigenschaften für den Block den du verändern willst, überhaupt vorhanden sind.
Code:
get_param('...exakterBlockname bzw pfad...','ObjectParameters')

_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
Private Nachricht senden Benutzer-Profile anzeigen
 
guguli
Themenstarter

Forum-Century

Forum-Century


Beiträge: 166
Anmeldedatum: 04.04.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 29.07.2013, 11:13     Titel:
  Antworten mit Zitat      
Also Femur ist das Modell, Steifigkeit ist ein Subsystem in diesem Modell und flaeche ist der block konstante mit dem Name "flaeche und f ist constant value.

Also ich hab so was ähnliches nur für ein Modell schon konstruiert. und zwar hab zuerst eine
Code:
function model_open(handles)
geschrieben
dann hab ich den Wert von den Slider in dem Simulink modell über tragen
Code:
function flaeche_Callback(hObject, handles)
  model_open(handles)
  NewStrVal = get(hObject,'String');
  NewVal = str2double(NewStrVal);
  if  isempty(NewVal) || (NewVal> 10) || (NewVal<0),
    OldVal = get(handles.flaecheSlider,'Value');
    set(hObject,'String',OldVal)
   
  else
    set(handles.flaecheSlider,'Value',NewVal)
    set_param('ModularSimulation/Patient/Steifigkeit/flaeche','Value',NewStrVal)
  end
 
 
% --- Executes on slider movement.
function flaecheSlider_Callback(hObject, eventdata, handles)
% Ensure model is open
  model_open(handles)
  NewVal = get(hObject,'Value');
  set(handles.flaeche,'String',NewVal)
  set_param('ModularSimulation/Patient/Steifigkeit/flaeche','Value',num2str(NewVal))

Das funktioniert ohne probleme. aber jetzt will ich mehrere modelle benutzen

Also ich hab mehrere Modelle, die ich von GUI aus mit Radiobutton auswählen kann. In der GUI hab ich noch mehrere Slider. Nun will ich wenn ich ein Modell ausgewählt habe, der wert der Slider nur in diesem modell über tragen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Mmmartina
Forum-Meister

Forum-Meister


Beiträge: 745
Anmeldedatum: 30.10.12
Wohnort: hier
Version: R2020a
     Beitrag Verfasst am: 29.07.2013, 11:24     Titel:
  Antworten mit Zitat      
Wie b ereits geschrieben: es gibt kein Feld mit Namen f. Und auch in deinem bisherigen, alten quellcode nutzte du nicht "f" sondern "Value".

guguli hat Folgendes geschrieben:
Also Femur ist das Modell, Steifigkeit ist ein Subsystem in diesem Modell und flaeche ist der block konstante mit dem Name "flaeche

Dass alles, was vor "Flaeche" steht, der Pfad ist, ist klar. Ich wollte nur wissen, was für ein Blocktyp es ist.
Wenn es ein Constant-Block ist, wirst du mit
Code:
set_param('Femur/Steifigkeit/flaeche','Value','...')

dessen Wertigkeit verändern können.

Ein Feld mit dem Namen 'f' ist mir für einen constant-block nicht bekannt.

Und auch per get_param(gcbh,'ObjectParameters') finde ich kein Feld, was so heißt.

Ansonsten: setze Breakpoints, hangel dich durch den Quellcode, schaut dir an, was in den einzelnen Variablen steht, oder mach zwischendurch weitere abfragen. (z.B. get_param('Femur/Steifigkeit/flaeche','Value') )
_________________

LG
Martina

"Wenn wir bedenken, daß wir alle verrückt sind, ist das Leben erklärt." (Mark Twain))
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.