2014-06-20 1 views
0

이 .txt 파일로 가져 오기 여러 숫자 CSV는 매트릭스 형태로 숫자 CSV 데이터로 구성이 .txt 파일들 (이들 중 N을 말한다). 원래의 행렬 형식을 유지하면서 이러한 각 데이터 파일을 하나의 (1 x N) 셀 배열로 가져 오려고합니다. (.이 함수의 일부가 될 것입니다): I가 여러 번의 셀 어레이

fileId = fopen('data1.txt'); 
A{1} = textscan(fileID, '%d %d %d', 'delimiter',',','CollectOutput',1); 

는하지만 내가 .txt 파일의 데이터 (100) 열이있는 경우 : 원본 데이터가 작은 경우, 3 × 3가, 다음 textscan는 다음과 같은 방식으로 일을 말할? formatSpec에서 '% d'을 100 번 쓸 수도 있지만 더 좋은 방법이 있어야합니까?

이것은 쉬운 문제가 될 것 같다,하지만 난 matlab에 아주 새로운 해요 및 진행 방법에 관해서는 딱하다. 어떤 충고라도 감사 할 것입니다, 감사합니다 !! 그 텍스트 파일의 각 일관된 데이터와 같은 경우에

+0

왜'csvread()'를 사용하지 않겠습니까? – jerad

답변

0

, 당신은 형식 지정자에 대한 걱정없이 importdata를 사용할 수 있습니다. 두 가지 접근 방법이 여기에 기초하여 논의됩니다. 그 텍스트 파일을 가정

는 접근법 1

filenames = {'data1.txt' 'data2.txt' 'data3.txt'}; %// cell array of filenames 
A = cell(1,numel(filenames)); %// Pre-allocation 
for k = 1:numel(filenames) 
    imported_data = importdata(char(filenames(k))); 
    formatted_data = cellfun(@str2num, imported_data, 'uni', 0); 
    A{k} = vertcat(formatted_data{:}) 
end 

접근법 2

현재 작업 디렉토리에, 직접 파일 이름을 얻고 저장하는 데 사용할 수있는 유일한 .txt 인 파일입니다 이것으로부터 셀 배열로의 데이터 -

files = dir('*.txt'); 
A = cell(1,numel(files)); %// Pre-allocation 
for k = 1:numel(files) 
    imported_data = importdata(files(k).name); 
    formatted_data = cellfun(@str2num, imported_data, 'uni', 0) 
    A{k} = vertcat(formatted_data{:}) 
end