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

VariablenNamen Generierren / Anfänger braucht dirngen hilfe

 

CrazyScientist
Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 07.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2014, 15:46     Titel: VariablenNamen Generierren / Anfänger braucht dirngen hilfe
  Antworten mit Zitat      
Hallo Leute,

Ich bräuchte hilfe bei einem wahrscheinlich sehr leichten Problem:

Ich habe eine Schleife, die mir viele Werte erzeugt. Die Schleife läuft durch und gibt bei jedem durchgang neue werte aus. Diese Werte möchte ich gerne zwischenspeichern ( in einem .mat-file) jedes mal mit neuem Namen. Simpeles Beispiel.

for i = 1:4 % Beispiel

x =1:10
y = i.*x


Ergebnis:
ErsterSchleifenDurchlauf: 1 2 3 4 5 6
ZweiterSchleifenDurchlauf: 2 4 6 8 10


Wie kann ich den Ergebnisse der einzelnen Schleifendurchgängen verschiedene Namen geben und sie in einem mat-file speichern ?
Private Nachricht senden Benutzer-Profile anzeigen


CrazyScientist
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 07.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2014, 15:47     Titel:
  Antworten mit Zitat      
vergessen:

Vielen Danke für eure Hilfe und Zeit Very Happy
Private Nachricht senden Benutzer-Profile anzeigen
 
CrazyScientist
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 07.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.07.2014, 16:10     Titel:
  Antworten mit Zitat      
function B1_Callback(hObject, eventdata, handles)
for i = 1:4
x = 1:10;
y = i.*x
if i == 1
A =y
save('Var.mat','A','-append')
elseif i == 2
B =y
save('Var.mat','B','-append')
elseif i == 3
C =y
save('Var.mat','C','-append')
elseif i == 4
D =y
save('Var.mat','D','-append')
else
end

end




.............................................................................................................
Das, nur viel simpler bitte
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 07.07.2014, 16:10     Titel:
  Antworten mit Zitat      
Hallo,

mir ist nicht ganz klar, was du möchtest. Möchtest eine .mat Datei pro Schleifendurchgang erzeugen oder eine .mat-Datei nach dem die Schleife abgearbeitet ist erzeugen und dann die ganzen Vektoren zusammen speichern?
Für ersteres zum Beispiels so:
Code:
for i = 1:4 % Beispiel
    x =1:10;
    y = i.*x;
    filename = sprintf('my_data_%d.mat',i);
    save(filename, 'y')
end


Für letzteres musst du dir überlegen, wie du die einzelnen y-vektoren speichern möchtest. Es empfiehlt sich gerade *nicht*, die durchzunummerieren mit y1, y2, y3 und y4, sondern diese dann lieber gesammelt in einer Cell abzulegen:
Code:
Y = cell(1,4);
for i = 1:4 % Beispiel
    x =1:10;
    y = i.*x;
    Y{i} = y;   % die Vektoren in einer Cell ablegen
end
filename = sprintf('my_data.mat');
save(filename, 'Y')

Das Laden funktioniert dann mit load().

Viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
CrazyScientist
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 07.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2014, 10:19     Titel:
  Antworten mit Zitat      
danke für die antwort. Ich werde mich wohl einfach noch mal mit Arrys beschäftigen müssen....

ich wollte einfach nur die Ergebnisse eines SchleifenDurchlaufes Zusammenfassen und ihnen einen namen geben. Damit ich später sagen kann: Beim ersten SchleifenDurchlauf kamen diese Zahlenraus.....beim zweiten diese.....
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 08.07.2014, 10:37     Titel:
  Antworten mit Zitat      
Hallo,

dafür eignet sich dann die zweite Variante. Deine oben geschriebenen Variablen A, B, C, D, ... kann man schon automatisch erstellen mit einer Kombination aus eval() und sprintf(), aber weiteres Arbeiten ist dann auch nur so umständlich über weitere Kombinationen aus eval() und sprintf() möglich. Davon ist generell abzuraten - da findest du hier viele Beispiele für.
Besser ist eine Cell, dann ist der Index auch wirklich ein Index. Also statt die Variablen y1, y2, y3 und y4 zu erzeugen, erzeugt man eine Cell Y und schreibt an die i-te stelle dann yi rein. Dann kann man auch bequem wieder eine Schleife drüber laufen lassen.

Wie man es machen kann:
Code:
% eine .mat-datei für alle Durchgänge zusammen
Y = cell(1,4);
for i = 1:4 % Beispiel
    x =1:10;
    y = i.*x;
    Y{i} = y;   % die Vektoren in einer Cell ablegen
end

% Das Cellarray Y entweder direkt im Workspace behalten oder wegschreiben
% und neu laden
filename = sprintf('my_data.mat');
save(filename, 'Y')
clear Y     % Y ist nun weg
load(filename)  % Y ist wieder da:

for i = 1:length(Y)
    n = length(Y{i});
    sprintf(['Beim %d-ten Durchlauf kamen diese Zahlen raus: ', repmat('%d ',1, n)], i, Y{i})
end


viele Grüße,
Nras.
Private Nachricht senden Benutzer-Profile anzeigen
 
CrazyScientist
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 21
Anmeldedatum: 07.07.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2014, 11:40     Titel:
  Antworten mit Zitat      
tausend dank / genaus so klappts Very Happy

falls du noch Zeit hast......doofe frage...aber ich finde keine Antwort.....

Ich verwende gerade 9 RadioButtons.
Warum muss ich für jeden RadioButton erneut den Load() befehl verwenden?
Jedes mal wenn ich etwas für einen neuen RadioButton programmieren will, muss ich die gleichen Variablen, die ich eine Funktion vorher einglesen habe, neu einlesen.
Private Nachricht senden Benutzer-Profile anzeigen
 
Nras
Forum-Meister

Forum-Meister


Beiträge: 608
Anmeldedatum: 21.02.12
Wohnort: ---
Version: 7.12.0.635 (R2011a)
     Beitrag Verfasst am: 08.07.2014, 12:36     Titel:
  Antworten mit Zitat      
Hallo,

das klingt nach GUI, da kann ich nicht helfen. Du könntest dafür eine neue Frage im GUI-Unterforum stellen.

Viele Grüße,
Nras.
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.