Verfasst am: 15.11.2010, 17:43
Titel: Matrix mit den Werten aus Cell
Hi alle zusammen,
Nach dem Einlesen von TXT File bekomme ich eine Cell, die ungefähr so aussieht:
<0x1 cell> <0x1 cell> <6x1 cell> <0x1 cell> <6x1 cell>
die <6x1 cell> sind ungefähr so:
'appl'
'1'
'x'
'5'
'ck'
'7'
x, y sind unbekannte werte, die danach ausgerechnet werden müssen.
Jetzt möchte ich alle werte aus diesen 2 cells <6x1 cell> in eine Matrix schreiben! ist es möglich?
Matrixform soll ungefähr:
[ 1, x, 5, ck, 7 % die 1. Cell
3, x, 8, dt, 10] % die 2. Cell
sein
Danke für jede Hilfe!
Danke dir erstmal für die schnelle Anwort.
Mit cell2mat habe ich auch schon mal versucht. Geht aber nicht, da die werte string und auch unterschiedlich groß sind, zB. 'y', 'pk'....
Hat Jmd hier für noch eine Idee?
Grüße
Cuong
leider beschreibst du nicht ganz genau wie du es moechtest. Du schreibst von einer Matrix, was aufgrund der strings nicht funktioniert. Moechtets du also nur die Zahlenwerte in einer neuen Matrix haben, oder die beiden Cellarrays in einem Cellarray zusammenfassen? Letzteres geht so:
Code:
test = {'2' '4' 'stk'};
test2 = {'rt' '8' 'tz'};
new = [test test2];
Falls beides nicht ist was du moechtest, so gib doch bitte mal ein Minimalbeispiel bzw. das Ergebnis was du erwartest an.
MFG
Sco
Spear1
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.11.2010, 21:20
Titel:
Hi Sco,
Vielen Dank für die Antwort!
Das Ergebnis soll ungefähr wie von der 1. Lösung sein. Aber es hat leider irgendwie nicht klappt bei der Umstellung in der aufgabe.
An bei habe ich eine Inputdatei hingefügt.
und dem Code:
Code:
[txtfile,path2txt] = uigetfile('*.txt','Bitte Datei auswählen');
fid = fopen(fullfile(path2txt,txtfile),'r');
k = 1;
while ~feof(fid) line=fgetl(fid);
input_string(k) = textscan(line,'%s','commentStyle', '#',...
'emptyValue', -Inf,'delimiter', ',');
k = k+1;
end
Also nach dem Lesen habe ich dann eine Cellstruktur "input_string{k}"
um aber die Daten besser umzugehen möchte ich alle datenwerten in eine Matrix schreiben, also die Matrix muss so sein:
[1, 100, 50, 20, 70, wi;
2,500 bl, 40, bl, wi]
also erste Zeile enthält : AbschnittNr, Lange, Da teil1, Di Teil1, Da teil2, Di, Teil2.
2. Zeile enthält daten von Teil 2.
Hoffe Ihr weiter hlfen könntet.
Danke vorraus!
Grüße
Spear1
na das soll mal einer deinem ersten Post entnehmen, was du hier möchtest .
Also wie schon gesagt ist es nicht möglich numerische Werte und Strings in einer Matrix zu vereinigen. Es bleibt also in jedem Falle ein cell Array, mit dem man jedoch auch gut arbeiten kann.
In deinem Fall musst du die Werte einfach so in den Cell Array anordnen wie du eben möchtest, dass stellt eigentlich kein Problem dar:
Code:
new = [input_string{1,8}(4:6)' input_string{1,9}(5:6)'];
new(2,1:5) = [input_string{1,10}(4:6)' input_string{1,11}(5:6)'];
das da bestimmte Bereiche eingerückt sind spielt für textscan keine rolle. Er hat es bei mir, mit deinem Code, die Daten korrekt Zeilenweise eingelesen.
Aber was möchtest du mir mit dem Posting sagen, entspricht mein Vorschlag nicht deinen Erwartungen? Wenn ja was ist falsch?
MFG
Verwirrter Sco
Spear1
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 15.11.2010, 22:42
Titel:
Vielen Dank Sco,
Ich bin noch neubie im Matlab - Bereich, daher hab keine Ahnung wie es mit Cell - Struktur geht. Mir ist daher lieber bei Matrizen zu bleiben.
Aber von diesem Beispiel hast Du mir gezeigt, dass man auch ziemlich einfach mit dem "Cell" Typ arbeiten kann.
Hab sehr viel von dir gelernt.
Ich bedanke mich herzlich
Natürlich lässt es sich i.d.R. einfacher mit Matrixen arbeite, solange wir über Zahlenwerte sprechen. Wenn wie in deiner Datei jedoch auch Strings (Buchstaben) für die Auswertung entscheident sind, lässt sich dass aber eben nicht in einer Matrix zusammenfassen, da hierfür alle Werte vom gleichen Datentyp sein müssen. Für solche Fälle eignet sich ein Cell-Array.
Wenn Fragen verbleiben, frage
MFG
Sco
Spear1
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 16.11.2010, 15:36
Titel:
Hi Sco,
Hab hier ein kleine Problem mit dem cell2mat befehl.
ich hab ein Cell:
'1e7' '256' '13'
'5e8' '323' '76'
nach dem cell2mat bekomme ich:
1e725613
5e8323765
mit size der matrix : 2X8
Ergebniss soll sein:
1e7, 256, 13
5e8, 323, 76
mit size 2x3.
Hättest Du eine Idee dafür?
Danke voraus!
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.