동일한 시간대에 걸쳐 300 초의 타임 스텝을 사용하여 많은 데이터 세트를 보유하고 있습니다. 관찰 기간 (여기에 내가 0 3000 초에 절단 한)이 끝나기 전에 종료 설정은 나머지 공간에 NaN이 있습니다MATLAB의 데이터 포인트 간의 독립 변수를 해결합니다.
x = [0;300;600;900;1200;1500;1800;2100;2400;2700;3000];
y(:,1) = [4.65;3.67;2.92;2.39;2.02;1.67;1.36;1.07;NaN;NaN;NaN];
y(:,2) = [4.65;2.65;2.33;2.18;2.03;1.89;1.75;1.61;1.48;1.36;1.24];
y(:,3) = [4.65;2.73;1.99;1.49;1.05;NaN;NaN;NaN;NaN;NaN;NaN];
내가 몇시에 각 데이터 세트는 것로 알고 싶습니다 y = 2.5
가장 가까운 y 값을 2.5로 찾은 다음 관련 시간을 사용하여 시도했지만 매우 정확하지는 않습니다 (도트 모두 같은 수평선에 있어야 함) :
ybreak = 2.5;
for ii = 1:3
[~, index] = min(abs(y(:,ii)-ybreak));
yclosest(ii) = y(index,ii);
xbreak(ii) = x(index);
end
난 후 데이터 포인트 사이의 선형 보간을 수행하고, Y = 2.5 (X)에 대한 해결했지만,이 작업 할 수 없었다 (
먼저 I는 NaN이 제거를하는 그것을 수행하는 간단한 방법이있을 것 같다) :
for ii = 1:3
NaNs(:,ii) = isnan(y(:,ii));
for jj = 1:length(x);
if NaNs(jj,ii) == 0;
ycopy(jj,ii) = y(jj,ii);
end
end
end
그런 시도 피팅
for ii = 1:3
f(ii) = fit(x(1:length(ycopy(:,ii))),ycopy(:,ii),'linearinterp');
end
그리고 수 다음과 같은 오류 메시지가 : 나는 (하나 개의 데이터 집합) 루프 외부에 장착하려고
Error using cfit/subsasgn (line 7)
Can't assign to an empty FIT.
, 그것은 잘 작동 :
f = fit(x(1:length(ycopy(:,1))),ycopy(:,1),'linearinterp');
f =
Linear interpolant:
f(x) = piecewise polynomial computed from p
Coefficients:
p = coefficient structure
하지만 다음 여전히 F를 해결할 수 Y는 O 2.5
syms x;
xbreak = solve(f(x) == 2.5,x);
Error using cfit/subsref>iParenthesesReference (line 45)
Cannot evaluate CFIT model for some reason.
Error in cfit/subsref (line 15)
out = iParenthesesReference(obj, currsubs);
어떤 조언이나 생각되는 = (X) = 2.5 시간을 찾기 위해 이것에 대한 접근 방식은 많이 감사 할 것입니다. 많은 수의 데이터 세트에 대해이 작업을 수행 할 수 있어야합니다.이 작업에는 모두 다른 수의 NaN 값이 있습니다.