간단한 보간
당신은 단지 다른 방법을 보간 할 수
...
% Your code
x = [1 2 3 4 5 6 7 8 9];
y = [1 2 3 4 5 4 2 6 8];
xq = [1:0.25:9];
yq = interp1(x, y, xq);
% Interpolate your newly interpolated xq and yq to find x = x1 when y = 3.5
x1 = interp1(yq, xq, 3.5)
찾기 제로
이 방식이 더 복잡하지만, 데이터에 따라, 5 월 더 적용 가능하다. 당신은 fzero
를 사용하여 루트 찾는 방법 어떤 종류의, 그리고 코멘트에 언급 한 바와 같이
% Initialise
x = [1 2 3 4 5 6 7 8 9]; y = [1 2 3 4 5 4 2 6 8];
% Define function, like your interpolation, which will have a zero at x=x0
% when y = y0.
y0 = 3.5;
yq = @(xq) interp1(x, y, xq) - y0
% find the zero, intial guess must be good enough
y0 = fzero(yq, 1)
다음과 같이 정의 된 함수를 사용할 수
에서, intial 추측 "충분히 좋은"해야
-이뿐만 아니라입니다 수렴 범위가
fzero
이지만 평가하는 동안 x의 값이 보간 범위를 벗어난 경우 테스트가 중단되면 중단됩니다.
예 :
y0 = fzero(yq, 1)
% >> Exiting fzero: aborting search for an interval containing a sign change
% because NaN or Inf function value encountered during search.
% (Function value at 0.971716 is NaN.)
y0 = fzero(yq, 5)
% >> y0 = 3.5, as expected from the input data.