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

Mex String Matrix

 

Tobi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2012, 08:36     Titel: Mex String Matrix
  Antworten mit Zitat      
Hallo zusammen,

ich versuche schon eine Weile eine String Matrix in einem C Mex file zu erzeugen und diese dann mit plhs wieder an Matlab zu übergeben.

Die Matrix soll 2 Dimensional sein und möglichst jede Zelle einzeln zur Laufzeit mit Strings gefüllt werden können.

Ich bekomme immer nur eindimensionale Arrays übergeben jedoch nicht 2 Dimensionale.

Hoffe jemand hat dazu vielleicht einen kurzen Codeschnipsel. Das kann ja nicht so aufwendig sein.. Ich bin am verzweifeln Smile

Danke
Tobi


rainer87
Forum-Anfänger

Forum-Anfänger


Beiträge: 32
Anmeldedatum: 22.01.12
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 01.03.2012, 19:25     Titel:
  Antworten mit Zitat      
es gibt da so funktionen wie "mxcreatecellmatrix", mit der du direkt eine matrix erstellen kannst. beschrieben wird die mit mxsetcell.
für die genaue funktionsweise müsste ich auch nochmal gucken, wobei auch in der doc von der o.g. funktion ein beispiel ist.
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 02.03.2012, 14:39     Titel:
  Antworten mit Zitat      
Hy Rainer,

ja genau die beiden Stichworte waren der Schlüssel Smile

Grob folgender Code bringt einen zur Lösung falls es jemanden interessiert:

Code:

plhs[0]= mxCreateCellMatrix(20,COLUMNS);

for(element=0;element<20;element++){

                mxSetCell(plhs[0],num,mxCreateString(tmp[element]));    
                num++;              
                           
}  



DANKE!
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 02.03.2012, 18:41     Titel: Re: Mex String Matrix
  Antworten mit Zitat      
Hallo Tobi,

Eine "Char Matrix" ist eine Matrix vom Typ CHAR. Du suchst nach einem "Cell String". Beides ist keine "String Matrix".

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Tobi

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.03.2012, 11:48     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich habe einfach eine Matrix gesucht in die ich Strings packen kann. Ich weis nun nicht was du mir sagen willst.

Ob eine String Matrix und eine CellMatrix mit Strings nun was anderes ist bzw. allgemein eine String Matrix nun was anderes ist als das was ich nun habe weis ich nicht. Bei den ganzen Bezeichnungen tu ich mir schwer.
Aber lass mich nicht dumm sterben und erklär mir doch bitte wo da die Unterscheide sein sollen und welchen Name ich nun der Matrix geben soll die ich nun verwende. Oder meinst du ich hab die falsche Matrix genommen für den Zweck?

Tobi
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 05.03.2012, 16:42     Titel:
  Antworten mit Zitat      
Hallo Tobi,

Dann versuche ich mal die Begriffe zu erklären:

1. Ein "String" ist in Matlab ein Zeilen-Vektor ([1 x N]) des Typs CHAR.
2. In Matlab kann man auch eine CHAR-Matrix erzeugen, wobei dann alle Strings (Zeilen-Vektoren) die gleiche Länge haben. Dies ist ein Überbleibsel von Matlab 4, als es noch keine Cell Strings gab.
3. Ein CELL-Array nimmt jeden Typ von Daten auf. Wenn man darin nur Strings speichert, wird es Cell String genannt. Dies ist gut geeigent, um eine Liste von Strings verschiedener Länge zu speichern.
Die meisten String-Funktionen laufen auch mit Cell Strings, wie STRCMP, STRNCMP, STRFIND, UPPER, LOWER, DEBLANK, STRTRIM, etc.

Eine "String-Matrix" wäre ein [M x N] Matrix, die als Elemente Strings enthält - dies ist in Matlab nicht möglich. Ein {M x N} Cell String existiert dagegen.
Strings in einer CHAR-Matrix zu speichern ist nur in seltenen Fällen praktisch. Es ist meist ineefizient, weil die Strings spaltenweise im Speicher stehen:
Code:
x = ['abc'; 'def']
disp(x(:))

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



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.