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

Array erweitern, alte Zeile leider wieder leer

 

MM
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 28.04.2012, 10:32     Titel: Array erweitern, alte Zeile leider wieder leer
  Antworten mit Zitat      
Hey,

ich habe eine grundlegende Frage zu Arrays in GUI.

In der Commandozeile kann ich z.B. folgendes eingeben:

Code:
F(1,:) = [ 1 2 3]


und danach könnte ich noch dies eingeben:

Code:
F(2,:) = [7 8 9]


dann würde F wie folgt aussehen:

1 2 3
7 8 9


Dies habe ich jetzt auch in GUI versucht.

Bei jedem Button Click soll eine neue Zeile ergänzt werden.
Das klappt auch, das Problem ist nur dass in der ersten Zeile nur noch 0 0 0 steht.

Code:
handles.U(i,:) = 0:1:Uoc;
handles.I(i,:) = Isc-Is*(exp(handles.U(i,:)/Ut)-1);



i wird als zähler immer inkrementiert und sieht in der ausgabe auch korrekt aus.

jemand ne idee, was ich machen muss, damit die Werte in den Zeilen vor der aktuellen Zeile bestehen bleiben?

Vg,
MM
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2012, 10:36     Titel:
  Antworten mit Zitat      
Hallo,

das Problem ist vermutlich, dass du die Matrix nur lokal überschreibst. Hast du am Ende deines Callbacks ein
Code:
guidata(hObject, handles)

?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 28.04.2012, 10:56     Titel:
  Antworten mit Zitat      
leider hat mir dein Tipp noch nicht weitergeholfen.

Mir scheint der Code auch relativ kompliziert um ein einfaches Array zu füllen.

Also hier ist meine Button Callback Funktion:

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

    axes(handles.axes1);
    cla;

    Uoc = str2double(get(handles.edit1,'String'));
    Umpp = str2double(get(handles.edit2,'String'));
    Pmpp = str2double(get(handles.edit3,'String'));
   
   
  %  Kennlinie_berechnen(Uoc, Pmpp, Umpp, handles.i);
    Impp = Pmpp / Umpp;
    Isc = Impp * Uoc / (1.1375 * Umpp);
    M = Uoc / Isc * (-5.411*(Pmpp/(Isc*Uoc))+6.45*Umpp/Uoc+3.417*Impp/Isc-4.422);
    Rpv = -M*Isc/Impp+Umpp/Impp*(1-Isc/Impp);
    Ut = -(M+Rpv)*Isc;
    Is = Isc*exp(-Uoc/Ut);

    handles.i               % Ausgabe in Kommandozeile
   
    % Array erzeugen
    handles.U(handles.i,:) = 0:1:Uoc;
    handles.I(handles.i,:) = Isc-Is*(exp(handles.U(handles.i,:)/Ut)-1);                          
   
    handles.U               % Ausgabe in Commandozeile
    handles.I
 
    handles.i = handles.i + 1;
    guidata(hObject, handles); % Update handles structure    
end


Zuvor werden die Handles so deklariert:


Code:
% --- Executes just before Bedienungs is made visible.
function Bedienungs_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to Bedienungs (see VARARGIN)
 
    % Choose default command line output for Bedienungs
    handles.output = hObject;

    handles.i = hObject;
    handles.i = 1;
    handles.U(5,10) = hObject;
    handles.U(5,10) = 0;
    handles.I(5,10) = hObject;
    handles.I(5,10) = 0;
 
    % Update handles structure
    guidata(hObject, handles);

end



Was muss ich tun?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2012, 11:17     Titel:
  Antworten mit Zitat      
Hallo,

sieht auf den ersten Blick gut aus.

Mir scheint aber, dass diese Zeile
Code:
handles.U(handles.i,:) = 0:1:Uoc;


Probleme machen wird, wenn sich Uoc verändert, da verschiedene Zeilen einer Matrix nicht unterschiedlich lang sein können.

Was passiert momentan? Unerwartetes Verhalten? Fehlermeldungen?

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 28.04.2012, 11:34     Titel:
  Antworten mit Zitat      
habe in der angesprochenen zeile Uoc mal durch ne Konstante ersetzt, dann scheint es zu funktionieren.

danke für den hinweis.

bleibt nur die frage wie ich die variable flexibel gestalten kann.
also ich kann damit leben, dass die anzahl der werte konstant ist, aber die werte sollten entsprechend Uoc sein.
Bsp.:
U = [ 1 2 3 4 5 ;
10 20 30 40 50 ]

wie bekomme ich das hin?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.495
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 28.04.2012, 12:02     Titel:
  Antworten mit Zitat      
Hallo,

du könntest z.B.

Code:
linspace(Umin, Umax, 5)


verwenden.

Was ein sinnvoller Wert für Umin bzw. Umax ist, musst du entscheiden.

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

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 28.04.12
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 28.04.2012, 12:06     Titel:
  Antworten mit Zitat      
vielen Dank!
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.