0

我想创建一个函数(symfun),并且我想将它划分为案例,即如果 t> 那么答案将是 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 分成几个案例?

4

1 回答 1

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,然后test从 matlab 提示符调用。也许如果你从这个开始,那么你可以修改它以满足你的需要。

于 2013-05-10T08:09:01.433 回答