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

Matrix mit den Werten aus Cell

 

spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 17:43     Titel: Matrix mit den Werten aus Cell
  Antworten mit Zitat      
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!

Gruß
Spear


Achi
Forum-Guru

Forum-Guru


Beiträge: 250
Anmeldedatum: 14.04.10
Wohnort: ---
Version: R2007a
     Beitrag Verfasst am: 15.11.2010, 17:51     Titel:
  Antworten mit Zitat      
Denke nicht, schau dir
Code:
an
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 19:41     Titel:
  Antworten mit Zitat      
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
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.11.2010, 20:13     Titel:
  Antworten mit Zitat      
Hallo,

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];
 

Als Ergebnis nur Zahlenwerte der Cell-Arrays als Matrix:
Code:

test = {'2' '4' 'stk'};
test2 = {'rt' '8' 'tz'};
new = [test test2];
new = regexp(new, '\d*', 'match');
new(cellfun('isempty',new)) = [];
new = [new{:}];
mat = str2double(new)
 


Falls beides nicht ist was du moechtest, so gib doch bitte mal ein Minimalbeispiel bzw. das Ergebnis was du erwartest an.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 21:20     Titel:
  Antworten mit Zitat      
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

testdatei.txt
 Beschreibung:

Download
 Dateiname:  testdatei.txt
 Dateigröße:  611 Bytes
 Heruntergeladen:  313 mal
testdatei.txt
 Beschreibung:

Download
 Dateiname:  testdatei.txt
 Dateigröße:  611 Bytes
 Heruntergeladen:  309 mal
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.11.2010, 22:12     Titel:
  Antworten mit Zitat      
Hallo,

na das soll mal einer deinem ersten Post entnehmen, was du hier möchtest Smile.

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)'];
 


Hoffe dies ist nun was du suchtest?

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 22:15     Titel:
  Antworten mit Zitat      
irgendwie ist die Datei nicht richtig dargestellt, wenn man auf Download klickt.
So schaut es aus:
# datenstruktur
# Geo : Befehl fuer geometriedaten
# bl : wert bleibt wie von letztem Abschnitt
# wi: wert von 1.rohr (außen D) gleicht innen D der 2. rohr
# Teil: ro1 : rohr 1, ro2 : rohr2
# befehl, Abschnitt, Teil, Laenge, Aussen D, Innen D
#------------------------------------------------------------------------
GEO, 1, ro1, 100, 50, 20
GEO, 1, ro2, 100, 70, wi
GEO, 2, ro1, 500, bl, 40
GEO, 2, ro2, 500, bl, wi
# -----------------------------------------------------------------------
#Dateiende

Grüße
Spear1
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.11.2010, 22:39     Titel:
  Antworten mit Zitat      
Hallo,

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
Private Nachricht senden Benutzer-Profile anzeigen
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.11.2010, 22:42     Titel:
  Antworten mit Zitat      
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

Grüße
Cuong
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 15.11.2010, 22:52     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:

Mir ist daher lieber bei Matrizen zu bleiben.

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 Smile

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 15:36     Titel:
  Antworten mit Zitat      
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!
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 16.11.2010, 15:55     Titel:
  Antworten mit Zitat      
Hallo,

die Loesung dafuer hatte ich auch schonmal in diesem Thread genannt Smile:
Code:

test = {'1e7' '256' '13';'5e8' '323' '76' }
str2double(test)
 


MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 16:07     Titel:
  Antworten mit Zitat      
Perfekt! Du bist echt ein Profi Very Happy
Vielen Dank
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 17:36     Titel:
  Antworten mit Zitat      
Hi alle,
gibt es eine elegantere lösung für :
Code:

    for k = 1:50
        for j = 1:20
            if isempty(Test_cell{k,j})
                Test_cell{k,j} = '0';
            end
        end
    end
 

oder nicht?

Grüße
Spear1
 
Spear1

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.11.2010, 17:38     Titel:
  Antworten mit Zitat      
wobei die leere werte nur in Zeile auftreten
 
Neues Thema eröffnen Neue Antwort erstellen

Gehe zu Seite 1, 2  Weiter

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.