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

cell aray in eine Matrix

 

Kim Sarah
Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 24.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2010, 12:09     Titel: cell aray in eine Matrix
  Antworten mit Zitat      
Hallo Leute,

ich habe folgendes Problem. Ich will die Einträge von einer Tabelle in eine Matrix umwandeln. Dazu habe ich das eingegeben:

Code:

Datak= get(handles.Knoten, 'Data');
K=cell2mat(Datak);


K1=K(:,1);
K2=K(:,2);
K3=K(:,3);
K1=str2num(K1);
K2=str2num(K2);
K3=str2num(K3);
K=[K1 K2 K3];
assignin('base', 'K', K );

 


Ich kriege nun zwar eine Matrix, aber ich kann keine 2-stelligen Einträge mehr machen, weil der Befehl cell2mat die einzelnen Ziffer als einen einzelnen Eintrag in der "single matrix" schreibt. Und da die "single Matrix" noch als String steht muss ich diese nun noch in num umwandeln durch str2num.

Habt ihr eine Lösung für mein Problem? Gibt es vllt ein Befehl der den ganzen Prozess aufeinmal macht?

Danke schon mal:D
Private Nachricht senden Benutzer-Profile anzeigen


_Peter_

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.12.2010, 15:10     Titel:
  Antworten mit Zitat      
Hallo Kim,
im Hilfebeispiel werden auch 2-stellige Zahlen verarbeitet und das funktioniert ohne Probleme.

Was steht in "handles.Knoten" drin? Sind das strings? Kannst du da ein exaktes Beispiel nennen?

Gruß
Peter
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 06.12.2010, 16:27     Titel:
  Antworten mit Zitat      
Hallo

Bitte ein lauffähiges Beispiel erstellen, es ist total unklar warum du CELL2MAT/NUM2STR nutzt..

Nutzt du UITABLE? Was liest du denn für Werte? Mehr Info Bitte!
Private Nachricht senden Benutzer-Profile anzeigen
 
Kim Sarah
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 24.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2010, 00:47     Titel:
  Antworten mit Zitat      
Hallo,

sry für dir fehlenden infos.

Ja ich benutze ein uitable, namens Knoten, um im GUI Zahlen in eine Tabelle einzutippen.
Diese Tabelle hat 5 Zeilen und 3 Spalten, z.B.:

x y z

1 5 7
6 4 10
3 5 8
1 5 7
11 3 4

Nun möchte ich aus dieser Tabelle mit diesen Werten eine Matrix (5x3) machen mit denen ich weiterrechnen kann.

Ich hoffe die Infos reichen jetzt.

Danke
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


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

Zitat:

Ich hoffe die Infos reichen jetzt.


Ja eig. schon, die Antwort lautet verwende cell2mat. Also wenn ich mir eine Tabelle erstelle und dort beliebeige Zahlenwerte eingebe und dann mit cell2mat in eine Matrix umwandle funktioniert das ohne Probleme.

Was du mit "single Matrix" und dem num2str (im 1. Post) willst verstehe ich leider nicht.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Kim Sarah
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 24.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2010, 13:54     Titel:
  Antworten mit Zitat      
Hallo,

danke erst mal.

ich kriege das irgendwie nicht hin.
Kann mir vllt jemand ein Befehl mit cell2mat schreiben, womit ich die Daten von der uitable aus dem GUI hole und sie dann in eine Matrix umwandle?

Vielen Dank.
Private Nachricht senden Benutzer-Profile anzeigen
 
Kim Sarah
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 24.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2010, 14:06     Titel:
  Antworten mit Zitat      
und noch was Very Happy :

Vielleich solltet ihr noch wissen, dass mein Hauptproblem mit cell2mat ist,
dass die die Matrix als ein char-Array gespeichert wird und nciht etwa als ein double array.
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.12.2010, 14:14     Titel:
  Antworten mit Zitat      
Hallo,

an sich sollte str2double (ohne cell2mat) das Problem lösen.
Code:
str2double({'2', '3'; '4' '5'})

Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 07.12.2010, 14:32     Titel:
  Antworten mit Zitat      
Hallo Harald,

vielleicht stehe ich ja auf dem Schlauch, aber wenn ich mir eine Tabelle erstelle, die Felder editable mache, bieliebe Werte eingebe, die Werte mit dem get Befehl in eine CellMatrix speichere
Code:

test= get(handles.uitable1, 'Data');
 

und dann cell2mat anwende erhalte ich eine "numerische" Matrix (double). Verwende ich jedoch str2souble erhalte ich nur "NAN's"
Code:

>> a = cell2mat(test)
a =
  1.0e+003 *
    0.0034    0.0035
    0.3130    0.0037
    0.2320    0.3230
    3.2330    0.2340
>> b = str2double(test)
b =
   NaN   NaN
   NaN   NaN
   NaN   NaN
   NaN   NaN

>> whos
  Name      Size            Bytes  Class     Attributes

  a         4x2                64  double              
  b         4x2                64  double              
  test      4x2               544  cell    
 


Ich verstehe nicht warum es nicht mit cell2mat funktionieren soll?

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.501
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 07.12.2010, 14:36     Titel:
  Antworten mit Zitat      
Hallo sco,

ich habe zugegebenermaßen nur in MATLAB ein Cell Array erzeugt, von dem ich vermutet habe, dass es so aussieht wie das, was man von uitable bekommt. Zudem könnte hier das Problem mit dem Character Array auftreten.
Insofern: wenn es zur Lösung des Problems beiträgt, ists gut - wenn nicht, hoffe ich einfach, dass sich eine andere Lösung findet.

Edit: Bei mir kommen die Daten direkt als Double-Array zurück. Insofern kann ich das eigentliche Problem nicht nachvollziehen.
Grüße,
Harald
Private Nachricht senden Benutzer-Profile anzeigen
 
denny
Supporter

Supporter



Beiträge: 3.853
Anmeldedatum: 14.02.08
Wohnort: Ulm
Version: R2012b
     Beitrag Verfasst am: 07.12.2010, 16:38     Titel:
  Antworten mit Zitat      
Welche Matlab Version verwendest du?
Private Nachricht senden Benutzer-Profile anzeigen
 
Kim Sarah
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 24.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2010, 23:10     Titel:
  Antworten mit Zitat      
verwende matlab 7.10.0 R2010a
Private Nachricht senden Benutzer-Profile anzeigen
 
Kim Sarah
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 24.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 07.12.2010, 23:58     Titel:
  Antworten mit Zitat      
soo Sco ich hab jetzt genau dasselbe probiert wie du und bei mir kommt komischerweise eine fehlermeldung wenn ich zweistellige zahlen eintrage in die uitable und bei einstelligen zahlen kriege ich auch keine richtige matrix wie du sie bekommst sondern ein Block von Zahlen

Code:
test= get(handles.uitable2, 'Data');
a = cell2mat(test)


Bei einstelligen Einträgen

Code:
a =

42
29
72
54


bei 2-stelligen Einträgen eine Fehlermeldung

Code:
??? Error using ==> cat
CAT arguments dimensions are not consistent.

Error in ==> cell2mat at 89
            m{n} = cat(1,c{:,n});

Error in ==> TEST>pushbutton1_Callback at 79
a = cell2mat(test)

Error in ==> gui_mainfcn at 96
        feval(varargin{:});

Error in ==> TEST at 42
    gui_mainfcn(gui_State, varargin{:});


kann mir jemand sagen woran das liegen könnte?
Private Nachricht senden Benutzer-Profile anzeigen
 
Sco
Forum-Meister

Forum-Meister


Beiträge: 699
Anmeldedatum: 15.08.10
Wohnort: Dundee
Version: 2008a, 2010a
     Beitrag Verfasst am: 08.12.2010, 03:14     Titel:
  Antworten mit Zitat      
Hallo,

ich hatte jetzt die Möglicheit es auch mit deiner Matlab-Version zu testen (zuvor mit 2008a), und bei mir tritt der Fehler auch auf. Mathworks muss wohl in den 2 Jahren etwas geändert haben (was ich aber nicht so dolle finde, da dann wohl meine "alten" GUIs nicht mehr auf den neuen Versionen laufen-->muss ich aber erstmal selber sehen, werd das morgen mal ausprobieren). Jedenfalls kannst du wie Harald schon meinte den Befehl str2double verwenden um den "Fehler" zu umgehen:
Code:

test= get(handles.uitable2, 'Data');
a = str2double(test)
 


In der Zeile 89 von cell2mat, sollte muss der Ausdruck:
Code:

c{:,n}
in
m{n} = cat(1,c{:,n});
 

eine Zahl ergeben, was wohl bis min 2008a auch der Fall war. Bei Matlab 2010a ergeben sich dort jedoch strings, daher der cat Fehler. Somit vermute ich mal, dass Matlab nun die Daten der Table als Cellarray mit strings exportiert und zuvor als Cellaray mit double (bzw. eines Zahlenformates)?
Ein Indiz dafür wäre, dass:
Code:

str2double({2, 3; 4, 5}) % Cell mit doubles
 

nur NAN's ergibt (Siehe mein letztes Posting), hingegen:
Code:

str2double({'2', '3'; '4', '5'}) % Cell mit strings
 

die gewünschte Matrix ergibt.

MFG

Sco
Private Nachricht senden Benutzer-Profile anzeigen
 
Kim Sarah
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 35
Anmeldedatum: 24.11.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.12.2010, 14:45     Titel:
  Antworten mit Zitat      
Danke für eure Hilfe!!

ich hab das problem jetzt mit str2double gelöst.

Gruß
Sarah
Private Nachricht senden Benutzer-Profile anzeigen
 
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.