获取从数组创建的函数的值,而不使用索引

Lik*_*iky 0 matlab function

让我们考虑以下脚本,我在其中创建一个函数,例如y = f(x):

x = 0:0.01:2;
y = 0:0.02:4;
figure(1);clf;
plot(x, y);
Run Code Online (Sandbox Code Playgroud)

假设我现在想获得f的一些值,例如f(0.5),f(1)或f(1.5).有没有办法用matlab函数获取这些值,或者我必须首先得到x,0.5和1的1.5,以获得f(x)?

Wol*_*fie 5

如果你有一个实际的功能,你可以称之为f(x)......

f = @(xi) 2.*xi;

f(0.5)    % >> ans = 1
f(0.5001) % >> ans = 1.0002
f(10)     % >> ans = 20
Run Code Online (Sandbox Code Playgroud)

如果您的示例代码中有两个相应的数组,则可以使用x数据索引

x = 0:0.01:2;
y = 0:0.02:4;

y(x==0.5)    % >> ans = 1
y(x==0.5001) % >> ans = []
y(x==10)     % >> ans = []
Run Code Online (Sandbox Code Playgroud)

如果你有第二种情况,但想要插值以避免y(x==0.5001)=[]结果,你可以设置一个这样的函数

x = 0:0.01:2;
y = 0:0.02:4;
f = @(xi) interp1( x, y, xi );

f(0.5)    % >> ans = 1
f(0.5001) % >> ans = 1.0002
f(10)     % >> NaN
Run Code Online (Sandbox Code Playgroud)