it-swarm.com.de

Erstellen Sie ein Array von Strings

Kann man in MATLAB innerhalb einer for-Schleife ein Array von Strings erstellen?

Zum Beispiel,

for i=1:10
Names(i)='Sample Text';
end

Ich scheine es nicht so zu schaffen.

37
Brian

Sie müssen Zellen-Arrays verwenden:

names = cell(10,1);
for i=1:10
    names{i} = ['Sample Text ' num2str(i)];
end
46
Amro

Sie können ein Zeichen-Array erstellen, das dies über eine Schleife ausführt:

 >> für i = 1: 10 
 Namen (i,:) = 'Beispieltext'; 
 Ende 
 >> Namen 

 Namen = 

 Beispieltext __ Beispieltext __ Beispieltext __ Beispieltext __ Beispieltext __ Beispieltext __ Beispieltext __ Beispieltext __ Beispieltext __ Beispieltext __.

Dies könnte jedoch besser mit REPMAT implementiert werden:

 >> Names = repmat ('Sample Text', 10, 1) 

 Names = 

 Beispieltext 
 Beispieltext 
 Beispieltext 
 Beispieltext
 Beispieltext 
 Beispieltext 
 Beispieltext 
 Beispieltext 
 Beispieltext 
 Beispieltext 
9
b3.

Andere Option:

names = repmat({'Sample Text'}, 10, 1)
8
Rich C

In letzter Zeit wurden neue Funktionen in MATLAB hinzugefügt:

String-Arrays wurden in R2016b (als Budo und gnovice bereits erwähnt) eingeführt:

String-Arrays speichern Textstücke und stellen eine Reihe von Funktionen für .__ bereit. arbeiten mit text als daten. Sie können indizieren, umformen und verketten Sie Strings-Arrays genauso wie Sie es auch mit Arrays anderer Art.

Darüber hinaus können Sie ab R2017a ein string erstellen, indem Sie doppelte Anführungszeichen "" verwenden.

Wenn Ihre MATLAB-Version> = R2017a ist, gilt Folgendes:

for i = 1:3
    Names(i) = "Sample Text";
end

Überprüfen Sie die Ausgabe:

>> Names

Names = 

  1×3 string array

    "Sample Text"    "Sample Text"    "Sample Text"

Sie müssen sich nicht mehr mit Zellarrays beschäftigen.

3
codeaviator

Eine andere Lösung für diese alte Frage ist der neue Container string array, der in Matlab 2016b eingeführt wurde. Nach dem, was ich in offiziellen Matlab-Dokumenten gelesen habe, ähnelt dieser Container einem Zellen-Array, und die meisten Array-bezogenen Funktionen sollten sofort funktionieren. Für Ihren Fall wäre eine neue Lösung:

a=repmat('Some text', 10, 1);

Diese Lösung ähnelt einem Rich C 's Lösung , das auf ein String-Array angewendet wird.

2
Budo Zindovic

Wie bereits von Amro erwähnt, ist der einfachste Weg, dies zu tun, die Verwendung von Zellarrays. Budo berührte jedoch die neue string-Klasse , die in Version R2016b von MATLAB eingeführt wurde. Mit diesem neuen Objekt können Sie ganz einfach ein Array von Strings in einer Schleife erstellen, wie folgt:

for i = 1:10
  Names(i) = string('Sample Text');
end
1
gnovice

eine der einfachsten Methoden zum Erstellen einer String-Matrix ist wie folgt:

x = [{'erste Zeichenfolge'} {'zweiter Parameter} {' dritter Text '} {' vierte Komponente '}]

0
arman