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

Variablen aus Workspace mit for-Schleife einlesen

 

guest123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 10:15     Titel: Variablen aus Workspace mit for-Schleife einlesen
  Antworten mit Zitat      
Hallo zusammen,

ich habe folgendes Problem:
ich habe mehrere Variablen im Workspace (sample1, sample2, sample3, u.s.w.), die ich gerne nacheinander einlesen, eine fft durchführen und das Ergebnis der fft anschließend in neuen Variablen (fft_sample1, fft_sample2, usw.) speichern möchte. Ich habe mir dazu folgendes gebastelt:


Code:

fft_sample = cell(1000,1);
variable_id=input('<<enter number of variables for fft>>');
for i=1:variable_id
Signal=['sample' num2str(i)]
n = length(Signal); % Laenge des Signals
fft_out = fft((Signal),n)/n; % Fast Fourier Trafo
fft_sample{i} = fft_out;

end
 


Das Problem daran ist, dass nicht die Variablen selbst eingelesen werden, sondern nur je eine neue Variable mit dem string samplei erzeugt wird. Außerdem würde ich die Ergebnisse der fft gerne in separaten Variablen speichern und nicht in einem cell-array.

Viele Grüße
guest123


josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.07.2010, 11:19     Titel:
  Antworten mit Zitat      
Schau Dir die Funktion
Code:


Gruß

Jose
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
guest123

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 14:11     Titel:
  Antworten mit Zitat      
Hallo josekamara,

habe ich gemacht, bekomme die Funktion aber nicht eingebaut
 
josekamara
Forum-Meister

Forum-Meister


Beiträge: 529
Anmeldedatum: 26.04.08
Wohnort: München
Version: ---
     Beitrag Verfasst am: 21.07.2010, 14:18     Titel:
  Antworten mit Zitat      
Wenn die Variablen noch nicht existieren und neu definieren musst dann brauchst du
Code:


Aber wenn die schon existieren, dann geht es mit evalin.
_________________

Simulation
Private Nachricht senden Benutzer-Profile anzeigen
 
_Napoleon

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 14:26     Titel: a
  Antworten mit Zitat      
Hallo,

ich weiss nicht wie evalin funktioniert. soweit ich dich verstanden habe existieren die variablen schon, also würde ich es so machen mit EVAL:
Code:

fft_sample = cell(1000,1);
variable_id=input('<<enter number of variables for fft>>');
for i=1:variable_id
Signal=['sample' num2str(i)]
n = length(Signal); % Laenge des Signals
fft_out = fft((Signal),n)/n; % Fast Fourier Trafo
fft_sample{i} = fft_out;

end
 


eval,evalin.... sollte man eigentlich möglichst vermeiden.

gruss
 
_Napoleon

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.07.2010, 14:28     Titel: Re: a
  Antworten mit Zitat      
[quote="_Napoleon"]Hallo,

ich weiss nicht wie evalin funktioniert. soweit ich dich verstanden habe existieren die variablen schon, also würde ich es so machen mit EVAL:
Code:

fft_sample = cell(1000,1);
variable_id=input('<<enter number of variables for fft>>');
for i=1:variable_id
Signal=eval(['sample' num2str(i)])
n = length(Signal); % Laenge des Signals
fft_out = fft((Signal),n)/n; % Fast Fourier Trafo
fft_sample{i} = fft_out;

end
 


eval,evalin.... sollte man eigentlich möglichst vermeiden.

Sorry ich hab gerade vergessen den code mit EVAL zu ergänzen Very Happy

gruss
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.07.2010, 22:31     Titel: Re: Variablen aus Workspace mit for-Schleife einlesen
  Antworten mit Zitat      
Hallo Guest,

guest123 hat Folgendes geschrieben:
ich habe mehrere Variablen im Workspace (sample1, sample2, sample3, u.s.w.),
Code:
Signal=eval(['sample' num2str(i)]);



Unter der Annahme, dass die Variablen "sample1", "sample2" etc ausgelesen werden müssen, ist EVAL korrekt. Mit EVALIN oder ASSIGNIN läßt sich dies nicht bewerkstelligen. Es sein denn, Du meinst mit "im Workspace": "im Base-Workspace".

Weit besser (schneller, übersichtlicher, sicherer) wäre es allerdings, die Variablen gleich als Felder eines Structs oder als Cell erstellen.
Code:
S.sample1 = rand(100, 1);
S.sample2 = rand(100, 1);
...
Signal = S.(sprintf('sample%d', i));
 

Oder:
Code:

SData = struct2cell(S);
Signal = SData{i};
 


Gruß, Jan
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.