다음 코드를 더 간단하게 만들고 싶습니다. 이 좋아하지 않는함수에서 배열 주소 지정
name = str2num(strsplit(strsplit(files(i).name,'.')(1),'_')(2));
하지만 MATLAB :
files=dir('~/some*.txt');
numFiles=length(files);
for i = 1:numFiles
name=files(i).name;
name=strsplit(name,'.');
name=name{1};
name=strsplit(name, '_');
name=name(2);
name = str2num(name{1});
disp(name);
end
나는 내가 좋아하는 일을 사랑하는 것입니다 일반적으로 matlab에있는 초심자,입니다.
위의 접근법의 또 다른 문제는 matlab에서 name (2)과 같은 셀 유형을 제공하지만 내 구문에만 문제가있을 수 있다는 것입니다.
예 파일 이름 :
3000_0_100ms.txt
3000_0_5s.txt
3000_110_5s.txt
...
의이 '_'
에 의해 (확장을 제거한 후) 그때 내가 그들을 분할해야 '5 초'로 끝나는 모든 파일을 선택하고 싶은 말은과에, 두 번째 부분을 돌려 보자 위의 세 파일 이름의 경우는 0, 0, 110
입니다. 하지만 나는 이상한 복잡한 코드없이 matlab에이 간단한 작업을 수행하는 일반적인 호기심에 빠져있다.
예를 들어 파일 이름을 제공하고 원하는 결과를 설명해주십시오. – excaza
@excaza 질문을 세부 사항과 함께 편집했습니다. – leosenko
예제 파일 이름이 의도 한 용도를 상징하는 경우 일반 표현 일치가 의도 한 결과를 제공합니까?), {files (:). name}, 'UniformOutput', false ('regexp (c, '\ _ (? +?) \ _', 'tokens', 'once')'? – TroyHaskin