문자열 + i를 연결하는 방법?
for i=1:N
f(i) = 'f'+i;
end
MatLab에서 오류가 발생합니다. 패턴 fi의 N 문자열로 배열을 초기화하는 올바른 구문은 무엇입니까?
이것이 작동하지 않는 것 같습니다.
for i=1:4
f(i) = 'f';
end
를 사용하여 문자열을 연결할 수 있습니다 strcat. 숫자를 문자열로 연결하려는 경우 먼저를 사용 num2str하여 숫자를 문자열로 변환 해야합니다 .
또한 문자열은 벡터 또는 행렬에 저장할 수 없으므로 셀형 배열f 로 정의 해야하며 일반 괄호 대신 및 및를 사용하여 인덱싱해야합니다 .{}
f = cell(N, 1);
for i=1:N
f{i} = strcat('f', num2str(i));
end
R2014a 이전 버전의 경우 ...
한 가지 쉬운 비 루프 접근 방식은 문자열로 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'
다른 솔루션을 추가하겠습니다.
>> 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'
사용 sprintf은 이미 ldueck이 의견에 제안했지만 대답 할 가치가 있다고 생각합니다.
f(i) = sprintf('f%d', i);
이것은 제 생각에 가장 읽기 쉬운 솔루션이며 또한 약간의 유연성을 제공합니다 (즉, float 값을 반올림하려면 다음과 같은 것을 사용하십시오 %.2f).
에 따라 이 당신이 "N"으로 설정해야처럼 그것을 사용하기 전에보고 그것이 INT하지 문자열이 될 필요 것 같습니다? MatLab에 대해 많이 알지 못하지만 그 사이트에서 수집 한 내용은 .. 도움이되기를 바랍니다. :)
다음을 시도하십시오.
for i = 1:4
result = strcat('f',int2str(i));
end
코드가 생성하는 여러 파일의 이름을 지정하는 데 이것을 사용하면 더 많은 부분을 이름에 연결할 수 있습니다. 예를 들어, 확장자가 끝에 있고 주소가 시작에있는 경우 :
filename = strcat('c:\...\name',int2str(i),'.png');
참고 URL : https://stackoverflow.com/questions/8420147/how-to-concat-string-i
'program story' 카테고리의 다른 글
| 공백이있는 JSON 개체 키에 액세스 (0) | 2020.10.21 |
|---|---|
| C ++ 컴파일 버그? (0) | 2020.10.21 |
| 페이지를 닫을 때 (떠나지 않을 때) jquery beforeunload? (0) | 2020.10.21 |
| jQuery Button.click () 이벤트가 두 번 트리거됩니다. (0) | 2020.10.20 |
| C #에서 인라인 함수를 만드는 방법 (0) | 2020.10.20 |