Divakar의 대답은 당신이 당신의 텍스트 파일에 제로의 값이없는 경우, 즉 일반적으로 케이스하지 않을 수의 작품이지만. 예를 들어, 텍스트 배열 경우였다
1 2 3
4 0
5 6 0 7 8
다음 Divakar의 결과는 다음과 같습니다
1 2 3 nan nan
4 nan nan nan nan
5 6 nan 7 8
당신이 정말로 원하는 반면 :
1 2 3 nan nan
4 0 nan nan nan
5 6 0 7 8
이를 구현하는 가장 쉬운 방법은 최대 열 수 있습니다 dlmread 기능 (dlmread를 텍스트 편집기에 입력하고 Ctrl + D를 눌러 열어보십시오). 이 파일을 다른 이름 (예 : dlmread_nan.m)으로 작업중인 디렉토리에 별도의 파일로 저장하십시오.
if isempty(delimiter)
result = textscan(fid,'',nrows,'headerlines',r,'headercolumns',c,...
'returnonerror',0,'emptyvalue',0, 'CollectOutput', true);
else
delimiter = sprintf(delimiter);
whitespace = setdiff(sprintf(' \b\t'),delimiter);
result = textscan(fid,'',nrows,...
'delimiter',delimiter,'whitespace',whitespace, ...
'headerlines',r,'headercolumns',c,...
'returnonerror',0,'emptyvalue',0,'CollectOutput', true);
end
을 0으로 파일을 저장하는 대신 NaN이에 두 경우 모두 'emptyvalue'이후의 값을 변경 :
코드 (내 버전의 라인 126)의이 부분을 아래로 이동합니다. 그것은 다음과 같아야합니다
if isempty(delimiter)
result = textscan(fid,'',nrows,'headerlines',r,'headercolumns',c,...
'returnonerror',0,'emptyvalue',NaN, 'CollectOutput', true);
else
delimiter = sprintf(delimiter);
whitespace = setdiff(sprintf(' \b\t'),delimiter);
result = textscan(fid,'',nrows,...
'delimiter',delimiter,'whitespace',whitespace, ...
'headerlines',r,'headercolumns',c,...
'returnonerror',0,'emptyvalue',NaN,'CollectOutput', true);
end
당신의 배열을 얻으려면, 이것을 사용 :
result = dlmread_nan('text.txt', ' ');
%%//This will give you exactly what you're looking for.
을 조금 복잡하지만 MATLAB의 라이브러리에서 복사하여, 그것은 아마 훨씬 더 강력하고 있습니다 처음부터 쓰는 것보다 오류가 없다.
당신이 우리가 할 수있는'textread' – bla
예를 가까이 당신이 필요로 여기에 표시된 예를 살펴해야합니다 http://stackoverflow.com/questions/14158165/읽기 - 블록 - 중 - 데이터 -에 - matlab에 배열 – beedot