을 특정 데이터를 추출하는 제 동안 루프 조건 I 4 개 데이터 세트를 가지고는 : 하나 시간 및 압력와 기상 데이터이고 다른 하나는 압력 센서 데이터 세트 인 같은. 시간 및 압력. 근본적으로 둘 다 시계열입니다. 더 긴 시계열은 두 변수에 대해 약 64008 개의 데이터 포인트를 갖는 기상 데이터입니다. 압력 센서의 더 짧은 시계열은 51759입니다. 짧은 시계열은 누락 된 데이터 요소가있는 긴 시계열의 하위 집합이라고 말할 수 있습니다. 그럼에도 불구하고 날씨에 대한 압력을 받고 싶지만 내 센서의 시간에만 압력을 받고 싶습니다.
동기 그러니까 기본적으로, 내가 구현하려고 오전 그래서 루프마다 해당 시간 내 압력 센서 PF 및 데이터인지, 나는 날씨 데이터로부터 압력을 취할 것입니다 동안. 날씨 데이터에서 시간을 기록 할 필요가 없습니다. 압력 센서의 시간 순서를 사용할 수 있기 때문입니다. A를
예
내가 무슨 말을하고 어떤 아이디어를 얻을, 나는 샘플 스크립트를했고, 그것을 잘 실행됩니다. 당신이 볼 수 있듯이
x(:,1) = (1:50)';
x(:,2) = (51:100)';
y(:,1) = [1:12 20:25 40:45]';
i = 1;
j = 1;
while i < numel(y)+1
if y(i) == x(j,1)
a(i,1) = x(j,2);
i = i + 1;
j = j + 1;
else
j = j + 1;
end
end
a
% check
size(y)
size(a)
, 나는 2 열에서 긴 시리즈와 X의 벡터를했다. 그리고 나서 x 벡터에 포함 된 데이터 요소를 포함하는 벡터 y 값의 부분 집합을 만들었습니다. 나는 스크립트를 실행합니다. 크기는 성냥 y의 크기와 같습니다. 나는 행렬 자체도 같은 값을 가지고 있다는 것을 알았다. 그래서 작동합니다. 이것은 단순한 버전이 아니라면 내가 누락 된 부분입니다. 어느 쪽이든, 내 진짜 대본은 아래에 있습니다. 난 내 데이터 세트에 갈 때 % Pressure Data
west_time;
west_pressure;
% Weather Data
weather_data(:,1) = weather_time;
weather_data(:,2) = weather_pressure;
% Initialize vector
weather_pressure_sensor = zeros(numel(west_time));
% Obtaining the pressure from the weather data at a
% particular point in time when it corresponds
% with the time from my pressure sensor
i = 1;
j = 1;
while i < numel(west_time),
if west_time(i) == weather_data(j,1)
weather_pressure_sensor(i,:) = weather_data(j,2);
i = i + 1;
j = j + 1;
else
i = i;
j = j + 1;
end
end
% Weather Pressure
weather_pressure_final = weather_pressure_sensor(:,2);
그러나, 나는 오류 코드로 실행 : 내 코드에 약간의 도움을받을 수 있는지 궁금
Attempted to access weather_data(64009,1); index out of
bounds because size(weather_data)=[64008,2].
Error in data_timeset2 (line 69)
if west_time(i) == weather_data(j,1)
. 나는 뭔가를 놓치고 있습니까, 아니면 뭔가 정의하지 않았습니까? 이것은 내가 항상 while 루프를 수행 한 방식이므로 지금은 나를 실패하게 만드는 이유를 모르겠습니다. 그러나 어쨌든, 나는 그것이 정말로 사소하고 어리석은 것이라고 확신하지만 나는 내 삶을 알 수 없다. 아니면 다른 사람이 ... 어느 쪽이든, 많이 미리 감사!
나는 귀하의 방법을 좋아합니다. 이해가 가며 관리하기가 훨씬 쉽습니다. 그러나 조사를 통해 t1_members 벡터 (Locb)의 일부 숫자에 대해 0 값을 얻는 것을 발견했습니다. 나는 0이 A가 B에없는 것을 나타냅니다. 그러나 A가 B의 하위 집합이면 어떤 0도 없어야합니다. 맞습니까? –
작은 샘플 데이터 세트를 사용하여 편안하게 작업하십시오. 'A'가'B'의 부분 집합이라면''Lia''는'B'에 있기 때문에''Lia''는 모두''1''이 될 것입니다. 'Locb'는'A'와'find (Lia)'와 같은 길이의 인덱스 벡터입니다. 인수의 순서를 바꾸고 (작은 예제 사용) 무슨 일이 일어나는지보십시오. – tmpearce