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
ifisnan(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;
RowvarNames = char(txt(2:end,1)); %Bestimmen der Spaltenüberschriften=Variablennamen
for col=1:size(RowvarNames,1),
ifisnan(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;
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,:),[]) ifisnan(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 isvarname('RowvarNames(col,:)');
?????
else assignin('base',RowvarNames(col,:),[]) ifisnan(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;
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
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.
Einstellungen und Berechtigungen
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
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.