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

Spalten einer Datei automatisch Variablen zuweisen

 

LisaM
Forum-Anfänger

Forum-Anfänger


Beiträge: 45
Anmeldedatum: 04.02.14
Wohnort: Deutschland
Version: ---
     Beitrag Verfasst am: 19.02.2014, 14:08     Titel: Spalten einer Datei automatisch Variablen zuweisen
  Antworten mit Zitat      
Hallo,

ich lese in Matlab eine Datei ein, die 199 Spalten hat. Jetzt möchte ich gerne Spalte 2-100 mit Links1 bis Links99 benennen und Spalte 101-199 mit Rechts1 bis Rechts 99.

Kann man das irgendwie mit einer if-Schleife regeln, sodass man nicht jede einzelnen Variable hinschreiben muss (also den Code Links1 = PA.data(:,1); ersetzen)?

Gruß
Lisa
Private Nachricht senden Benutzer-Profile anzeigen


MickBro88
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 19.02.14
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.02.2014, 14:39     Titel:
  Antworten mit Zitat      
Hallo,

es ist ein bisschen schwierig einen variablen Variablennamen zu defnieren. Aber es würde folgendermaßen gehen:

Code:

% random Data
PA.Data = rand(1,199);

for i = 1:length(PA.Data)-1,
    if i <= 100,
        eval(sprintf('Links%d = %.4f',i,PA.Data(i+1)));
    else
        eval(sprintf('Rechts%d = %.4f',i,PA.Data(i+1)));
    end
end
 


Das bedeutet aber auch, dass Du 199 Variablen im Workspace hast. Bin mir nicht sicher ob das so zielführend ist.

MfG
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: 19.02.2014, 15:20     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Jetzt möchte ich gerne Spalte 2-100 mit Links1 bis Links99...

Zitat:
...also den Code Links1 = PA.data(:,1)...

das passt nicht zusammen. Soll in "Links1" nun die erste Spalte oder die zweite Spalte stehen?

Wie hier schon angemerkt wurde (und insgesamt auch schon oft im Forum angemerkt wurde) ist es nicht sonderlich förderlich, den Index im Variablennamen zu verstecken. Du wirst dann, wenn du zum Beispiel mit allen Spalten eine weitere Rechnung durchführen möchtest, wieder auf das Problem stoßen, die Variablen nicht einfach so ansprechen zu können.

Hier gibt es meiner Meinung nach zwei sinnvolle Wege:
1) Wenn alle Spalten gleich viele Einträge haben, könntest du dir eine Matrix Links und eine Matrix Rechts erstellen und dann füllen.
Code:
Links = PA.Data(:,2:100);
Rechts = PA.Data(:,101:end);

Ansprechen kannst du die von dir gewünschte Spalte "Links1" dann miit Links(:,1).

2) Alternativ ein Cell Array (gibt es auch reichlich zu hier und in der Hilfe), damit könntest du dann die Spalten mit Links{1} ansprechen, was deiner Vorstellung noch näher kommt. Beide Wege sind besser als knapp 200 Variablen zu erzeugen, mit denen man nur schwer weiterarbeiten kann.

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.