2017-10-30 4 views
1

.txt 데이터 파일을 Matlab으로 가져와야합니다. 파일은 3 개의 열로 만들어졌습니다. 각 열에는 주어진 변수에 대한 특정 번호가 있습니다. 스크립트 코드는 Matlab에 txt 파일 가져 오기 및 데이터 읽기

2) 매트랩 열에서 값을 제거해야합니다)

요구 사항

1, 다음을 수행 할 수 matlab에

에 TXT에서 데이터를 가져와야합니다 값의 경우 특정 범위를 벗어났습니다

3) Matlab은 어떤 줄과 어떤 유형의 오류를 말해야합니다.

내 접근

나는 다음과 같은 방법을 사용하여 시도했다

function data = insertData(filename) 
filename = input('Insert the name of the file: ', 's'); 
data = load(filename); 

Column1 = data(:,1); 
Column2 = data(:,2); 
Column3 = data(:,3); 

%Ranges for each column 
nclm1 = Column1(Column1>0); 
nclm2 = Column2(Column2 >= 10 & Column2 <= 100); 
nclm3 = Column3(Column3>0); 

%Final new data columns within the ranges 
final = [nclm1, nclm2, nclm3]; 

end 

문제

위의 코드를 다음과 같은 문제가 있습니다

1) Matlab은 사용자가 파일 이름을 입력 한 후에 가져온 데이터를 '데이터'로 저장하지 않습니다. 그러므로 나는 왜 내 코드가 잘못된 것인지 모른다. I는 매트랩 독립적 컬럼의 값을 제거하는 것을 알 수 있으므로

filename =input('Insert the name of the file: ', 's'); 
    data = load(filename); 

2) 단부의 열은 동일 크기를 갖고 있지. 그러므로 Matlab이 범위가 주어지면 세 개의 '벡터'가 아닌 Matlab이 행렬에서 값/행을 제거하도록하는 방법이 있습니다.

답변

0

1) 무슨 뜻인지 확실하지 않습니다. 샘플 텍스트 파일을 만들고 Matlab은 데이터를 data으로 가져옵니다. 그러나 원래 필터링되지 않은 데이터 만 반환하므로 어쩌면 그게 무슨 뜻일까요 ??? 원래 데이터와 필터링 된 데이터를 반환하도록 수정했습니다.

2) 나쁜 인덱스를 함께 사용하면이 같은 각 열에서 제거됩니다. or 참고 다른 코드를 수정했습니다 ... 아래 코드의 주석을 참조하십시오.

function [origData, filteredData]= insertData(filename) 
% You pass in filename then overwrite it ... 
% Modified to only prompt if not passed in. 
if ~exist('filename','var') || isempty(filename) 
    filename = input('Insert the name of the file: ', 's');   
end 
origData = load(filename); 

% Ranges check for each column 
% Note: return these if you want to know what data was filter for 
% which reason 
badIdx1 = origData(:,1) > 0; 
badIdx2 = origData(:,2) >= 10 & origData(:,2) <= 100; 
badIdx3 = origData(:,3)>0; 

totalBad = badIdx1 | badIdx2 | badIdx3; 

%Final new data columns within the ranges 
filteredData = origData(~totalBad,:); 

end 

참고 : 오류 유형에 대한 줄을 알고 싶습니다. 이 정보는 이제 badIDx1, 2, 3에 포함되어 있습니다. 따라서 정보를 표시하거나 화면에 메시지를 인쇄하거나 정보를 표시하는 데 필요한 정보를 반환 할 수 있습니다.