在Scilab中构造一个分段定义的函数

时间:2014-11-22 22:10:43

标签: function scilab

我正在尝试创建该功能:

    如果t <0,则
  • x(t)= -1 如果t> 0
  • ,则
  • x(t)= 1

所以我这样做了:

function y = x(t);
    if t == 0
        y = 0;
    elseif t < 0
    y = -1;
    else
        y = 1;
    end
endfunction

t = linspace(0,100,1000);
plot(t,x(t));

但它不起作用。

1 个答案:

答案 0 :(得分:0)

它不起作用,因为如果t是一个向量(具有多个元素),例如t = [ - 1 0 1]然后 t == 0产生矢量结果:[F T F]。因此,你总是得到其他解决方案:y = 1。为了使其有效,您可以:

1。)使用for循环并分别检查t向量的每个元素:

function y = x(t);
  for i=1:size(t,"*")
    if t(i) == 0
      y(i) = 0;
    elseif t(i) < 0
      y(i) = -1;
    else
      y(i) = 1;
    end
  end
endfunction

t = linspace(-1,1,10);
clf();
plot2d(t,x(t),rect=[-1,-2,1,2]);

2.)使用内置的sign()函数,它完全相同,不仅适用于矢量,也适用于矩阵:

t = linspace(-1,1,10);
clf();
plot2d(t,sign(t),rect=[-1,-2,1,2]);