데이터가 서로 다른 실험을 통해 누적되어 있습니다. 이 열 중 하나는 실험 번호이며, 다른 열은 분석해야하는 데이터입니다.중첩 된 슬라이스로 matlab 벡터 인덱싱
데이터에서 분석까지 나는 부분적으로해야하고, 하나의 실험을 위해서 나는 시작해야하는 곳과 끝내야 할 곳의 색인을 알고 있습니다. 내 데이터가 분석을위한 것인지 아니면 하나의 논리 벡터를 만들 것인지 묻습니다. 일례로서
는 :
a = [8 8 8 6 6 6 8 8 8 8 8 5 5 5 5 8 8 ]';
b = [2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3]';
I가 필요한 데이터 벡터 a
이다 b
실험 번호이다. 간단하게 만들어가 생각
b2_lower = 3; % index where analysis should start
b2_upper = 5; % index where analysis should end
b3_lower = 4;
b3_upper = 7;
: 출력 제공
logicalINeed = [0 0 0 1 1 1 0 0 0 0 0 1 1 1 1 0 0 ];
dataFroAnalysis = a(logicalINeed==1)'
:
dataFroAnalysis =
6 6 6 5 5 5 5
내가 각 실험뿐만 완전하지 쌓인 열 인덱스를 알고 내가 마무리해야 0이 범위 내에 있으면 0으로 변경하고
c = zeros([length(a),1]);
c(b==2(b2_lower:b2_upper)) = 1;
c(b==3(b3_lower:b3_upper)) = 1;
분명히 이것이 제대로 작동하지 않습니다. 나는 for 루프를 구현하려고하지만 많은 카운터와 효율성을 전혀 얻지 못한다. 원래의 데이터는 500,000 가지 이상의 실험을 통해 100,000 개가 넘는 항목입니다.
이렇게 간단한 인덱싱 방법이 있습니까?
감사합니다. 나는 벡터를 예제 목적으로 만주고 단순함을 위해서이 세 가지 값을 가진다. 필자의 목표는 벡터 b와 인덱스 bn_lower, bn_upper의 값만을 기반으로하는 논리 벡터를 얻는 것이다. 원래 문제에서는 a의 값에 대해 색인을 생성 할 수 없습니다. – tomasz74