この実装では一次補間を使用しています。精度を高め、適切であると思われる場合は、別の次数推定に同様の戦略を使用できます。 data
を想定し
は列が増加またはxの値を減少させることによってソートされ、最初の列にx
値と第二中y
値を持つデータを含むあなたの配列の名前であり、そしてあなたは、値で、すべてのデータを探していましたy = 22;
searchPoint = 22; %search for all solutions where y = 22
matchPoints = []; %matrix containing all values of x
for ii = 1:length(data)-1
if (data(ii,2)>searchPoint)&&(data(ii+1,2)<searchPoint)
xMatch = data(ii,1)+(searchPoint-data(ii,2))*(data(ii+1,1)-data(ii,1))/(data(ii+1,2)-data(ii,2)); %Linear interpolation to solve for xMatch
matchPoints = [matchPoints xMatch];
elseif (data(ii,2)<searchPoint)&&(data(ii+1,2)>searchPoint)
xMatch = data(ii,1)+(searchPoint-data(ii,2))*(data(ii+1,1)-data(ii,1))/(data(ii+1,2)-data(ii,2)); %Linear interpolation to solve for xMatch
matchPoints = [matchPoints xMatch];
elseif (data(ii,2)==searchPoint) %check if data(ii,2) is equal
matchPoints = [matchPoints data(ii,1)];
end
end
if(data(end,2)==searchPoint) %Since ii only goes to the rest of the data
matchPoints = [matchPoints data(end,1)];
end
これはサンセリフコンパイラ書かれていたが、ロジックがオクターブで試験した(つまり、そこに変数名のわずかなタイプミスだが、数学が正しいかどう申し訳ありません)
あなたが与えることができますあなたのデータがどのように見えるのか? (グラフではなく数値形式)。 –
非常に正確ではない場合は、複数の方程式に適合することができます(?)とそれぞれを解く –
simulinkを使用してyが22に近いときにxをキャプチャできますが、25アレイそれはそれぞれ12のy値のために解かれる必要がありますか? – Bart