Dies liegt daran, arr(i)
ein einzelnes Element ist, während ['f:', num2str(i)]
enthält drei Zeichen. Auch for i = 1:length(1)
macht keinen Sinn, da length(1)
garantiert 1
ist. Ich glaube du wolltest for i = 1:length(a)
. Wenn das der Fall ist, schlage ich vor, Sie ersetzen length
mit numel
und i
mit ii
.
Der bessere Weg um das Array Sie wird wie folgt verwendet sprintf
erstellen möchten:
sprintf('f_%i\n',1:5)
ans =
f_1
f_2
f_3
f_4
f_5
Oder possiblby:
sprintf('f_%i ',1:5)
ans =
f_1 f_2 f_3 f_4 f_5
ich das denke, was Sie wirklich wollte:
for ii = 1:5
arr{ii} = ['f_', num2str(ii)];
end
arr =
'f_1' 'f_2' 'f_3' 'f_4' 'f_5'
Oder einfacher:
arr = arrayfun(@(n) sprintf('f_%i', n), 1:5, 'UniformOutput', false)
Die letzten beiden wie folgt indiziert werden können:
arr{1}
ans =
f_1
Sie können auch tun (gleiche Ergebnis):
str = sprintf('f_%i\n', 1:5);
arr = strsplit(str(1:end-1), '\n')
Wenn Sie diese Variablennamen erstellen tun, dann bitte nicht. Verwenden Sie stattdessen Zellen oder Strukturen.
Entschuldigung, Tippfehler. Ich wollte schreiben "für i = 1: Länge (a)" – user5603723