2016-08-19 2 views
0

나는 정말로 matlab에 녹슬다. 나는 데이터를 저장하기위한 몇 가지 간단한 루프를 나중에 평균화하려고 노력 중이다. 단순 들어, 내가이 데이터와 CVS 파일이 있다고 가정하자 : 테이블
1, 1.4, 38, 54
2, 0, 45, 72
3, 1, 37,

일, 초, 의자, 60
1, 0, 45, 72
Matlab : 데이터를 저장하고 나중에 평균화하고 플롯하는 간단한 루프

내가 하루 종일 의자, 테이블 및 초 아웃 이후 평균 다음 행의 나머지 부분을 포함하여 통에 하루 1의 모든 발생을 꺼내하고 싶어 1 초.

여기에 내가 현재 csv 파일을 열어 둔 코드가 있지만 'if'루프를 읽지 않습니다.

day= data(:,1); 
sec= data(:,2); 
chair= data(:,3); 
table= data(:,4); 

for m = 1:length(data); 
    if day==1; 
     sec1(:,1)=sec(:,1); 
     chair1(:,1)= chair(:,1); 
     table1(:,1)= data(:,1); 
    end 
end 

또한, 나는 루프 내에서 데이터를 수집 할 필요가 알고 있지만 다시하는 방법을 잊어 버린, 내가 올려 보았습니다 한 예는 도움이되지 않았다. 어떤 아이디어?

+0

에서 동일한 결과를 제공합니다. 아마도'day (m) == 1'과 같은 것을 원할 것입니다. 또한'length (data)'는 최대 차원의 크기를 반환합니다. 보다 견고한 접근 방법은 대신'size (data, 1)'를 사용하는 것입니다. – jodag

+0

아 - 하루 (m) == 1을 사용하는 것이 좋습니다. 고맙습니다! 크기와 길이에 대해 조언 해 주셔서 감사합니다. 연결했는데 두 번째 루프가 실행 중입니다. 이제 bin sec1, chair1 및 table1에 올바른 코드를 얻으려고합니다. 현재, 그것은 각 변수의 모든 발생을 단지 일일 = 1이 아니라 저장하고 있습니다. – Lauren5

+0

두 가지 다른 방법으로 답변을 추가했습니다. – jodag

답변

0

이 예제 코드는 내가 실수라고 생각하는 것을 수정합니다.

data = [1 1.4 38 54; ... 
     2 0 45 72; ... 
     3 1 37 60; ... 
     1 0 45 72]; 

day= data(:,1); 
sec= data(:,2); 
chair= data(:,3); 
table= data(:,4); 

sec1 = []; 
chair1 = []; 
table1 = []; 

for m = 1:size(data,1); 
    if day(m)==1; 
     sec1(end+1,1)=sec(m,1); 
     chair1(end+1,1)= chair(m,1); 
     table1(end+1,1)= data(m,1); 
    end 
end 

다음은`상수에 대한 배열입니다`day`를, 1` 테스트하고 더 압축 된 형태

data = [1 1.4 38 54; ... 
     2 0 45 72; ... 
     3 1 37 60; ... 
     1 0 45 72]; 

day= data(:,1); 
sec= data(:,2); 
chair= data(:,3); 
table= data(:,4); 

sec1 = sec(day==1,1); 
chair1 = chair(day==1,1); 
table1 = table(day==1,1); 
관련 문제