for i=1:N
f(i) = 'f'+i;
end
MatLab에서 오류가 발생합니다. 패턴 fi의 N 문자열로 배열을 초기화하는 올바른 구문은 무엇입니까?
이것이 작동하지 않는 것 같습니다.
for i=1:4
f(i) = 'f';
end
답변:
['f', num2str(i)]
조금 더 짧습니다.
한 가지 쉬운 비 루프 접근 방식은 문자열로 genvarname
구성된 셀형 배열 을 만드는 데 사용 하는 것 입니다.
>> N = 5;
>> f = genvarname(repmat({'f'}, 1, N), 'f')
f =
'f1' 'f2' 'f3' 'f4' 'f5'
이 함수 genvarname
는 더 이상 사용되지 않으므로 matlab.lang.makeUniqueStrings
다음 방법으로 대신 사용하여 동일한 출력을 얻을 수 있습니다.
>> N = 5;
>> f = strrep(matlab.lang.makeUniqueStrings(repmat({'f'}, 1, N), 'f'), '_', '')
f =
1×5 cell array
'f1' 'f2' 'f3' 'f4' 'f5'
genvarname
.
genvarname
더 이상 사용되지 않습니다.
다른 솔루션을 추가하겠습니다.
>> N = 5;
>> f = cellstr(num2str((1:N)', 'f%d'))
f =
'f1'
'f2'
'f3'
'f4'
'f5'
N
가 세 자리 ( >= 10
) 이상 이면 추가 공백이 생기기 시작합니다. strtrim(f)
제거 하려면 에 전화를 추가 하세요.
보너스 sprintfc
로 문자열의 셀형 배열을 멋지게 반환 하는 문서화되지 않은 내장 함수 가 있습니다.
>> N = 10;
>> f = sprintfc('f%d', 1:N)
f =
'f1' 'f2' 'f3' 'f4' 'f5' 'f6' 'f7' 'f8' 'f9' 'f10'
f
보이기 를 원 하십니까? 모든 개별fi
문자열이 함께 연결된 단일 문자열 ? 행당 하나의 문자열이있는 문자 배열? 셀형 배열?