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 ansprechen

 

Headshot
Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2011, 15:33     Titel: Variablen ansprechen
  Antworten mit Zitat      
Hallo,
Sitze nun schon seit längerem an 2 Problemen. Und zwar habe ich eine mat Datei mit Datensätzen[Array] ('Untitled_A00 ->'Untitled_A99'') und würde diese gerne bearbeiten. Dafür brauche ich zuerst das Maximum und danach möchte ich die einzelnen Datensätze umbenennen.
Solange ich die Datensätze ohne Verwendung von Variablen anspreche funktioniert das alles super. Bei der Anzahl an Datensätze würde ich das jedoch lieber über eine Zählvariable machen...

Kann mir einer sagen, warum bei meinem Programm das dynamische Ansprechen nicht funktioniert??


Code:


clc;
clear all;
close all;  

%% Daten laden
load('SensorA\A9_50_18Mai.mat');

a ='Untitled_A';
i=00;
name =[(a),num2str(i)];


[wert,pos]=max(Untitled_A00)    %% Funktioniert aber umständlich
[wert,pos]=max(name)              %% Problem 1

idx=10;
neuername=['Datensatz'+(idx)];
neuername=(name);                  %% Problem 2



end;
 
Private Nachricht senden Benutzer-Profile anzeigen


denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.07.2011, 15:49     Titel:
  Antworten mit Zitat      
Hallo

du willst String als Variable nutzen, das ist aber noch keiner Bezeichner.
Mit EVAL kann man sozusagen String zu Bezeichner umwandeln.

Code:

clc;
clear all;
close all;  

%% Daten laden
load('SensorA\A9_50_18Mai.mat');

i=0;
% hier ausgebessert
% da man bei Zahlen keine führende Null haben kann
% Führende Null bekommt man bei konvertieren:
name =sprintf('Untitled_A%02d',i);



[wert,pos]=max(Untitled_A00)    %% Funktioniert aber umständlich
[wert,pos]=max(eval(name))              %% Problem 1

idx=10;
%
% hier hast du was vergessen, Zahl zu konvertieren
neuername=sprintf('Datensatz%02d',idx);
eval([neuername,'=', name]);                  %% Problem 2

 



PS: es ist besser Eval zu meiden, also besser ist es gelich richtige Datenformate verwenden, wie z.B CELLEARRAYs stattdessen nutzen

Code:

Datensatz{10}=Untitled_A00;
 
Private Nachricht senden Benutzer-Profile anzeigen
 
Headshot
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 7
Anmeldedatum: 08.07.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2011, 16:04     Titel:
  Antworten mit Zitat      
Danke danke, klappt soweit.
Nur das eval recht langsam ist. Gibt es eine Möglichkeit die Ausgabe der einzelnen Daten (400.000) im Command WIndow zu unterdrücken?? Obwohl ich ein ; hinter dem Befehl habe erscheinen alle Daten...
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 08.07.2011, 16:09     Titel:
  Antworten mit Zitat      
Hallo

mit dem Strichpunkt werden Ausgaben unterdrückt, habe vergessen auch in EVAL-Ausdruck einzubauen.

so ausgebessert:
Code:


clc;
clear all;
close all;  

%% Daten laden
load('SensorA\A9_50_18Mai.mat');

i=0;
% hier ausgebessert
% da man bei Zahlen keine führende Null haben kann
% Führende Null bekommt man bei konvertieren:
name =sprintf('Untitled_A%02d',i);



[wert,pos]=max(Untitled_A00);    %% Funktioniert aber umständlich
[wert,pos]=max(eval(name));              %% Problem 1

idx=10;
%
% hier hast du was vergessen, Zahl zu konvertieren
neuername=sprintf('Datensatz%02d',idx);
eval([neuername,'=', name,';']);                  %% Problem 2

 
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.