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

String mit Variable vergleichen (assignin isvarname )

 

MoritzMoritz
Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2011, 13:23     Titel: String mit Variable vergleichen (assignin isvarname )
  Antworten mit Zitat      
Hallo liebe Forummitglieder,

bin mit Matlab in den Grundzügen vertraut und versuche gerade meine zweite Anwendung zu schreiben. Aus einem Excel File werden mittels xlsread die Daten ausgelesen und die ersten Zeilen- und Spalten- Strings als Variablen definiert und die jeweiligen Zeilen/Spalten mittels assignin dieser zugeordnet. Soweit kein Problem. Hier der Code der funktioniert:

Code:
[nums, txt,raw] = xlsread('Mappe1.xls') %Einlesen der Datei

ColvarNames = char(txt(1,2:end)); %Bestimmen der Spaltenüberschriften=Variablennamen

for col=1:size(ColvarNames,1),

      if isnan(nums(1,col)) %erstes Datenwort nicht numerisch?
        assignin('base',ColvarNames(col,:),char(txt(1:end,col))); %Zuweisen der Strings in der Spalte
    else %falls doch numerisch?
        assignin('base',ColvarNames(col,:),nums(:,col)); %Zuweisen der Zahlen in der Spalte
    end;
 
 end;

RowvarNames = char(txt(2:end,1)); %Bestimmen der Spaltenüberschriften=Variablennamen

for col=1:size(RowvarNames,1),
    if isnan(nums(col,:)) %erstes Datenwort nicht numerisch?
        assignin('base',RowvarNames(col,:),char(txt(col,1:end))); %Zuweisen der Strings in der Spalte
    else %falls doch numerisch?
        assignin('base',RowvarNames(col,:),nums(col,:)); %Zuweisen der Zahlen in der Spalte
 end;
 
end;


Dieser Code funktioniert aber nur, wenn die Variablennamen nicht öfters in der ersten Spalte oder Zeile vorkommen. Meine Idee: Mittels isvarname und assignin eine neue Variable als leere Matrix initialisieren (oder Array) und falls diese Variable schon existiert, die zugehörige Zeile oder Spalte als neue Zeile oder Spalte hinzufügen. Hier der Code (unvollständig; die Fragezeichen zeigen an, wo es hapert)

Code:
[nums, txt,raw] = xlsread('Mappe1.xls') %Einlesen der Datei

ColvarNames = char(txt(1,2:end)); %Bestimmen der Spaltenüberschriften=Variablennamen

for col=1:size(ColvarNames,1),
 if isvarname('ColvarNames(col,:)');
     ??????
 else  
     assignin('base',ColvarNames(col,:),[])
     if isnan(nums(1,col)) %erstes Datenwort nicht numerisch?
        assignin('base',ColvarNames(col,:),char(txt(1:end,col))); %Zuweisen der Strings in der Spalte
    else %falls doch numerisch?
        assignin('base',ColvarNames(col,:),nums(:,col)); %Zuweisen der Zahlen in der Spalte
    end;
 end;    
 
 end;

RowvarNames = char(txt(2:end,1)); %Bestimmen der Spaltenüberschriften=Variablennamen

for col=1:size(RowvarNames,1),
 if isvarname('RowvarNames(col,:)');
    ?????
 else
     assignin('base',RowvarNames(col,:),[])
     if isnan(nums(col,:)) %erstes Datenwort nicht numerisch?
        assignin('base',RowvarNames(col,:),char(txt(col,1:end))); %Zuweisen der Strings in der Spalte
    else %falls doch numerisch?
        assignin('base',RowvarNames(col,:),nums(col,:)); %Zuweisen der Zahlen in der Spalte
    end;
 end;
 
end;


Meine Frage: Wie kann ich die Variable zu 'RowvarNames(col,:)' (die ja den selben String darstellt) nachdem isvarname('RowvarNames(col,:)') = 1 ist, ansprechen ? Ich möchte wie gesagt zu dieser Variablen eine neue Zeile oder Spalte hinzufügen.

Mit Dank im Voraus

lg

Moritz

Zuletzt bearbeitet von MoritzMoritz am 17.11.2011, 14:47, insgesamt einmal bearbeitet
Private Nachricht senden Benutzer-Profile anzeigen


MoritzMoritz
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 2
Anmeldedatum: 17.11.11
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 17.11.2011, 13:30     Titel:
  Antworten mit Zitat      
Und noch eine Frage. Ich habe z.B viele Probenbezeichnungen P_100_50_1
P..z.B Phosphat
_100...100µL
_50......50mM
_1...erste Messung

Im obigen Beispiel habe ich die fortlaufende Nummer für die wiederholten Messungen weggelassen und z.B nur P_100_50. Das wäre eine Variable.

Wenn ich aber z.B den Text auslesen möchte. Und zu P verschiedene Volumina mit jeweils verschiedenen Konzentrationen und von jeder Konzentration meherer Messungen habe. Wie ordne ich das am besten an und wie kann ich die Probenbezeichnungen auslesen und z.B über arrays mit fieldnames meine Daten zuordbar ablegen?

Ich habe das Problem, dass ich meine Suchwörter über z.B Google nicht genau definieren kann und zuviel Information bekomme.

Bin daher über Hinweise wie: "Vergiss Matlab und mach eine Datenbank." oder "Schau dir mal die Funktionen xyz an." sehr dankbar

lg

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