Verfasst am: 14.10.2011, 09:41
Titel: Daten aus Excel in Struct einlesen
Hallo ihr Cracks,
ich habe folgendes Problem. Ich habe ein Struct mit 4 Feldern angelegt.
Nun möchte ich jedes dieser Felder mit Daten aus einer Exceltabelle füllen. Die Daten hierfür stehen in Drahtdurchmesser.xls und sind in den Spalten (A2:A101) ... bis ... (D2:D101) eingegeben.
Wie bekomme ich die Daten in mein struct.
Außerdem möchte ich dann später die kompletten Daten eines Feldes in einem PopUp zur Auswahl anbieten.
Ich habe es erst einmal mit dem ersten Feld draht(n).nenn versucht.
Hier der Code:
Code:
function load_draht(anzahl)
draht = struct('nenn', 'minZunahme', 'maxDurchm', 'mittlererDurchm');
for(n=2:(anzahl+1))
range1=('A%g',n);
d=xlsread('Drahtdurchmesser.xls', 'Tabelle1', char(range1));
d1=num2str(d);
draht(n).nenn = input(d1);
end
for(n=1:anzahl) set(handles.Drahtdurchmesser_PopUp,'String',draht(n).nenn);
end
Das erzeugt keinen Struct mit 4 Feldern, sondern mit nur 2. Versuche es einfach mal im Command Window.
Der Range muss immer die Form "Start:Ende" haben, auch bei einem einzelnen Feld - siehe "help xlsread".
"range1=('A%g',n);"
Ich nehme an, Du meinst: "range1 = sprintf('A%d', n);". Das "char()" im XLSREAD-Befehl ist unnötig.
"d1=num2str(d); draht(n).nenn = input(d1);"
INPUT ist ein Befehl, siehe "help input". Soweit ich das sehe, ist der hier deplatziert.
Es wäre deutlich schneller, wenn Du den ganzen Block "A2:D101" am Stück ausliest.
"set(handles.Drahtdurchmesser_PopUp,'String',draht(n).nenn);"
Das überschreibt den Inhalt des Popupmenüs immer wieder, und zwar mit Zahlen. Du brauchst aber eine Liste der Zahlen, und zwar als Strings - Cell Strings um genau zu sein.
Gruß, Jan
Huuut
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 18.10.2011, 10:09
Titel:
Hallo Jan,
danke für deine Hilfe. Tips 1 und 2 hat mir sehr geholfen.
Ich habe aber noch ein Problem damit den kompletten Block einzulesen.
schau dir doch auch mal die Dataset Arrays aus der Statistics Toolbox an. Damit kannst du mit einem Befehl direkt aus einer Excel Datei ein dataset array erzeugen, mit dem ähnlich wie mit einer Struktur gearbeitet werden kann.
Das Popup-Menü benötigt einen "cell string", um mehrere Einträge zu haben. Unter dem Stichwort findest Du vieles in der Dokumentation.
Gruß, Jan
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.