在matlab中将函数与边界相结合

时间:2013-11-04 12:41:48

标签: matlab

我有这样的功能:

f(x) = {  x     if 0 < x < n
       {  n-x   if n < x < 2*n

如何在MATLAB中输入此功能?

1 个答案:

答案 0 :(得分:6)

最好的方法是将它放在子函数或嵌套函数中,或者放在一个单独的m文件中:

function y = f(x)
    n = 4; %// Or whatever your N is

    if x <= 0 || x >= 2*n
        y = 0;     
    elseif x < n
        y = x;
    else
        y = n-x; 
    end
end

或者更一般地,当x是向量/矩阵时,

function y = f(x)
    y = x;        
    y(x >= n) = n-x(x >= n);
    y(x <= 0 | x >= 2*n) = 0;
end

或者,您当然可以将n作为参数传递:

function y = f(x, n)
    ...
end

或者,您可以使用此匿名函数:

 f = @(x) (x>0 & x<n).*x + (x>=n & x<=2*n).*(n-x);

再次,可选地,传递n

 f = @(x,n) ...