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

Forsetzen von Variablen [HILFE]

 

cdt_53
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.01.2014, 14:11     Titel: Forsetzen von Variablen [HILFE]
  Antworten mit Zitat      
Guten Tag,

ich habe ein großes Problem. Dazu muss ich sagen, dass ich ein absoluter Matlab-Anfänger bin und ich mich so langsam am reinarbeiten bin, für einen Studentenjob.

Ich versuche es mal, anhand meines codes zu schildern:

Code:
function update_table(~,handles)

A=handles.A;
A01=A(:,:,1,1);
A02=A(:,:,1,2);
A03=A(:,:,1,3);
A04=A(:,:,1,4);
A05=A(:,:,2,1);
A06=A(:,:,2,2);
A07=A(:,:,2,3);
A08=A(:,:,2,4);
        ...

Alv1=[A01(1,1) A02(1,1) A03(1,1) A04(1,1) A05(1,1) A06(1,1) A07(1,1) A08(1,1)];
Alv1 = Alv1(Alv1~=0);
assignin('base','Alv1',Alv1);

Alv2=[A01(1,2) A02(1,2)...
 

Zur Erklärung: Mit A01(:,:,1,1) usw hole ich mir die bestimmten Werte, die in A gespeichert werden. Unter Alv1 und Alv2 gebe ich mir bestimmte Werte als Vektoren im Workspace gespeichert. Es funktioniert auch alles einwandfrei. Bis Alv2 komme ich mit gespeicherten Werten bis A16. Ich muss allerdings bis Alv5 ->A128<- anlegen. Und das noch einmal für andere Werte. Das wäre superviel Arbeit.

Nun zur eigentlichen Frage. Kann ich irgendwie eine Folge programmieren, die das Muster erkennt? Zum Beispiel:

A01(:,:,1,1)
->
A04=A(:,:,1,4);
A05=A(:,:,2,1);
->
A128=A(:,:128,4)

Das ich sozusagen die Zwischenschritte überspringen kann.

Man das ist ja mal megascheisse erklärt Embarassed Embarassed
Kann es nicht anders erklären, tut mir leid. Vielleicht weiß ja trotzdem jemand etwas.

Vielen Dank für die Mühe.
Gruß,
cdt_53

[EDITED, Jan, Bitte Code-Umgebung benutzen - Danke!]
Private Nachricht senden Benutzer-Profile anzeigen


Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 04.01.2014, 17:14     Titel:
  Antworten mit Zitat      
du hast anscheinend einen relevanten index im variablen namen versteckt. das ist, wie du sihst relativ ungünstig. mein tip währe also gleich ein richtige struktu zu benutzen wie zb cell arrays oder structs. dann kannst du den index auch als index benutzen.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 04.01.2014, 19:11     Titel: Re: Forsetzen von Variablen [HILFE]
  Antworten mit Zitat      
Hallo cdt_53,

Wie wäre es mit:
Code:
function update_table(~,handles)

A=handles.A;
A01=A(:,:,1,1);
A02=A(:,:,1,2);
A03=A(:,:,1,3);
A04=A(:,:,1,4);
A05=A(:,:,2,1);
A06=A(:,:,2,2);
A07=A(:,:,2,3);
A08=A(:,:,2,4);
        ...

Alv1 = A(1,1, 1:2, 1:4);
Alv1 = Alv1(Alv1~=0);
assignin('base', 'Alv1', Alv1);

Dann könnte man den Rest mit einer FOR-Schleife erledigen.
Ich stimme Winkow voll und ganz zu: Das Durchnummerieren von Variablen-Namen ist eine schlechte Idee. Dafür eignen sich Indices von Arrays viel besser.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
cdt_53
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.01.2014, 19:18     Titel:
  Antworten mit Zitat      
ok, das versuche ich mal umzusetzen.

Jetzt habe ich folgendes (ich denke mal eher kleines) Problem.

Ein GUI öffnet zum Beispiel Werte von A1-A4 und zeigt die Graphen einwandfrei an.

Jetzt möchte ich mit dem selben GUI aber etwas öffnen, dass nur die Werte von A1-A2 enthält.
Ich bekomme die fehlermeldung,dass A3 und A4 nicht exisitieren.

Kann ich irgendwie schreiben "Öffne A1-A4, falls diese auch alle existieren, ansonsten nur A1-A2" ?!
->
Code:
%
Error in GUI_Sinuskurven>update_table (line 279)
A3=A(:,:,1,3);

Error in GUI_Sinuskurven>load_pushbutton_Callback (line 157)
     update_table(hObject,handles);

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

Error in GUI_Sinuskurven (line 42)
    gui_mainfcn(gui_State, varargin{:});

Error in
@(hObject,eventdata)GUI_Sinuskurven('load_pushbutton_Callback',hObject,eventdata,guidata(hObject))

 
Error while evaluating uicontrol Callback
 


Gruß,
cdt_53
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 07.01.2014, 01:47     Titel:
  Antworten mit Zitat      
Hallo cdt_53,

Bei der Fehlermeldung fehlt der wichtige Teil, in dem drin steht, was der Fehler war. Bisher hast Du nur gepostet, wo der Fehler auftrat. Die entsprechenden Code-Zeile wäre ebenfalls hilfreich.
Zitat:
Kann ich irgendwie schreiben "Öffne A1-A4, falls diese auch alle existieren, ansonsten nur A1-A2" ?!

Ja, natürlich kann man das schreiben. Ich kann nichts konkretes vorschlagen, weil ich nicht verstanden habe, was "A1-A4" bedeutet.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Winkow
Moderator

Moderator



Beiträge: 3.842
Anmeldedatum: 04.11.11
Wohnort: Dresden
Version: R2014a 2015a
     Beitrag Verfasst am: 07.01.2014, 10:15     Titel:
  Antworten mit Zitat      
ich kann dir nur nochmal empfehlen keine indizes im variablen namen zu verstecken.
_________________

richtig Fragen
Private Nachricht senden Benutzer-Profile anzeigen
 
cdt_53
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 04.01.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.01.2014, 12:06     Titel:
  Antworten mit Zitat      
Ja habe die numerierung jetzt komplett weggelassen und indices verwendet.

Wie kann ich denn aber erreichen dass er mir mit A(1,1,1:8,1:4) erst 1:4 zählt und danach 1:8. so würde er ja immer 1:8 zuerst hochzählen und dann springt er zwischen den vektoren immer hin und her :/

gruß,

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