2017-10-31 6 views
0

Ich möchte jedem Element eines Zellen-Arrays einen Inhalt zuweisen, der vom Zellindex abhängt.Zuweisen von Inhalt zum Zellen-Array in Abhängigkeit vom Index

Beispiel: eine Zeichenfolge, die den Index der Zelle

Ein Weg, mit diesem unter Verwendung eines for-Schleife zu tun

for ind=1:10 
    my_cell_array{ind}=['string' num2str(ind)]; 
end 

Gibt es eine Möglichkeit wäre, diese mit cellfun oder anonymer Funktion Griffe vektorisieren?

Ich habe gerade diese Matlab Tricks gelernt aber ich mit ihnen immer noch nicht sehr gut bin, würde jede Anregung sehr geschätzt und hilfreich zu lernen

Antwort

1

Zur Vollständigkeit erzeugt die folgende vektorisierten Lösung führende Nullen, die in einigen Fällen wünschenswert sein können:

N = 10; % length 
str = 'string'; % string 
my_cell_array = cellstr(strcat(str, dec2base(1:N, 10))); 

Da Sie wissen möchten, wie man es mit cellfun macht (in diesem Fall ist arrayfun besser geeignet): das folgende erzeugt das gleiche Ergebnis wie Ihr Code, ohne führende Nullen:

my_cell_array = arrayfun(@(x) [str num2str(x)], 1:N, 'UniformOutput', false); 

Beachten Sie jedoch, dass arrayfun/cellfun keine Vektorisierung sind. Sie haben mehr oder weniger dieselbe Leistung wie eine explizite Schleife.

+0

vielen dank –

1

Sie sprintf mit %d für die Zahlen verwenden können. Um es zu den Zellen zu trennen, um einen Raum am Ende gelegt und strsplit:

my_cell_array=strsplit(sprintf('string%d ',1:10)) 
+0

ich mag es danke –

Verwandte Themen