我有XY數據的2列中的data.txt這樣的:定義函數作爲x的內插,Y數據
0 0
1 1
2 4
3 9
4 16
5 25
現在我要定義一個函數f(x),其中x是第一列和f(x)是第二列,然後可以打印這個功能的價值,像這樣:
f(2)
應該給我4
如何實現這一目標?
我有XY數據的2列中的data.txt這樣的:定義函數作爲x的內插,Y數據
0 0
1 1
2 4
3 9
4 16
5 25
現在我要定義一個函數f(x),其中x是第一列和f(x)是第二列,然後可以打印這個功能的價值,像這樣:
f(2)
應該給我4
如何實現這一目標?
假設你想爲你作爲參考的那些之間的數字一定的返回值,可以使用線性插值:
function y= linearLut(x)
xl = [0 1 2 3 4 5];
yl = [0 1 4 9 16 25];
y = interp1(xl,yl,x);
end
功能的更寬泛的版本可能是:
function y= linearLut(xl,yl,x)
y = interp1(xl,yl,x);
end
然後您可以使用匿名函數創建特定實例:
f = @(x)(linearLut([0 1 2 3 4],[0 1 4 9 16],x));
f(4);
您可以使用textread()
導入文件,然後使用find
以選擇正確的行。
從我腦袋未經測試的和:
function y = findinfile(x)
m = textread(data.txt)
ind = find(m(:,1)==x)
y = m(ind,2)
end
如果你只需要在陣列(無插值)中找到正確的值,你可以使用:
function out=ff(b)
a = [0 1 2 3 4 5 ; 3 4 5 6 7 8]';
[c,d]=find(a(:,1)==b);
out = a(c,2);
上面一個是何許我想要的東西,但是當我嘗試它時,它給了我一個錯誤: ||的操作數。和&&操作符必須可以轉換爲邏輯標量值。 interp錯誤(第44行) if l <1 || r <1 ||截止點<= 0 || cutl> 1 error2> linearlut(line 10) y = interp(xl,yl,x); test2(第3行)中的錯誤 linearlut(1) – Eddy 2012-07-19 10:55:04
如果我嘗試通用版本 – Eddy 2012-07-19 10:57:05
Aha,也會發生同樣的錯誤,通過用'interp1'替換'interp'來修復它。更新答案,我會將其標記爲已接受,謝謝 – Eddy 2012-07-19 11:06:04