在matlab中定义函数的不同情况(symfun)

时间:2013-05-09 18:17:34

标签: matlab

我想创建一个函数(symfun),我想把它分成几个案例,即如果t&gt;然后答案将是a,如果t <0,答案将是b。 问题是,matlab不允许我在sym函数之后放置if语句。

>> l = symfun(0, [m]);
>> l(m) = if m>0 3

我也尝试创建一个函数:

function [x1] = xt_otot_q3(t)

并尝试连接两个函数:

>> l(m) = xt_otot_q3(m)
Conversion to logical from sym is not possible.

有没有办法将symfun分解为案例?

1 个答案:

答案 0 :(得分:0)

不确定我理解你想要什么。 此代码“组合”下面定义的函数symfun和xt + otot_q3:

function test; 
  m=randn(4);               % N(0,1) random numbers
  l=xtotot_q3(symfun(0,m))  % combine xt_otot_q3 and symfun 
  l=symfun(0,xtotot_q3(m))  % combine symfun and xt_otot_q3
return

function lval=symfun(thr,rval); 
  lval=ones(size(rval));    % output, size of input, = 1 
  lval(rval<thr)=-1;        % output = -1 if input < thr 
return

function lval=xtotot_q3(rval); 
  lval=3*rval+1;            % some function, in this case 3 * input + 1 
return

您可以将整个位保存为test.m,然后从matlab提示符中调用test。也许如果你从这开始,那么你可以修改它以满足你的需要。