2013-10-03 21 views
7

Hallo Ich versuche, eine Zelle Array von Strings zu erstellen mit:erstellen eine Zelle Array von Strings Matlab

data = ['1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';]; 

, wo ich ein Zellenfeld von 25 Elementen zu erwarten. aber ich bekomme:

length(data) 

= 33 

so offensichtlich Zahlen 12,13 usw. zählen als 2 Bits.

Meine Frage ist dann, wie stelle ich sicher, dass das Zellenfeld der Länge 20 ist? Auch die Funktion, in die ich das Zellen-Array setze, muss ein Zellen-Array aus Strings sein, obwohl ich Ints verwende!

+0

Zeichenfolgen sind Zeichenfelder in Matlab. Durch das Verknüpfen solcher Strings entsteht eine lange Saite. Abgesehen davon: Länge, Größe usw. Berichtsgröße in Anzahl der Elemente anstelle von Bytes. – jpjacobs

+0

möglich duplicate von [Erstellen Sie ein Array von Strings] (http://StackOverflow.com/Questions/7100841/Create-an-Array-of-Strings) –

Antwort

16

Sie tun müssen:

data = {'1';'2';'3';'4';'5';'6';'7';'8';'9';'10';'11';'12';'13';'14';'15';'16';'17';'18';'19';'20';}; 

Verwendung {}. Diese bilden ein Zell-Array.

+0

natürlich, mein Fehler! – brucezepplin

+0

Herr, du hast mich vor ewigem Elend gerettet. Vielen Dank. –

11

können Sie verwenden {} statt [] eine Zelle zu bauen, oder können Sie strsplit verwenden eine beliebige Länge Zelle von Strings 1-N Darstellung von Zahlen zu bauen:

data = strsplit(num2str(1:N)); 

Update: Der schnellste Weg dies jetzt zu tun ist, mit der undokumentierten sprintfc Funktion (man beachte die „c“ am Ende), die jedes Element druckt, um seine eigene Zelle:

>> A = sprintfc('%g',1:20) 
A = 
    Columns 1 through 11 
    '1' '2' '3' '4' '5' '6' '7' '8' '9' '10' '11' 
    Columns 12 through 20 
    '12' '13' '14' '15' '16' '17' '18' '19' '20' 
>> which sprintfc 
built-in (undocumented) 
+0

oder 'data = arrayfun (@ (ii) ii, 1: N, 'uni', falsch)' –

+1

@GuntherStruyf: Close! Das gibt keine Fäden. Ich glaube, du meintest 'data = arrayfun (@ num2str, 1: N, 'uni', false)'. ;) – chappjc

+0

oder 'cellfun (@ num2str, num2cell (1: N), 'uni', false)'. So viele Möglichkeiten! – chappjc