0

我想知道如何从一个区间中获取一个特定的数字来测试它,然后能够在一个图表下构建不同的函数。例如(在本例中为“x”变量),

 x 0:.5:5;

 Ids=ones(x);
 figure;hold on;

 for n = 1:5
     if(x < 3.0) %problem here
         Ids(n) = plot(x,x.^x);
     else 
         if (x > 4.0)  %and here
            Ids(n) = plot(x,-x.^x);
         end
     end
 end

编辑

我真正想在 MATLAB 中做的是能够执行以下分段函数:

y(x) = {  0                   (t - 5) < 0
       { (t - 5)*(t - x)      x < (t - 5)
       { (t + x^2)            x >= (t - 5)

我似乎不明白如何绘制这个函数,因为x = 0:.5:10t = 0:.1:10。我知道如何在没有 . 的情况下执行此操作t,但是当t包含 并且与x.

4

2 回答 2

1

您可能正在寻找分段多项式: http: //www.mathworks.com/help/techdoc/ref/mkpp.html

否则,我建议制作两个向量“x”和“y”,可以这么说,并通过迭代 x 并应用您的条件和结果来填充 y,然后将 y 与 x 绘制。这将避免需要保留情节。

如果要为绘图设置动画,请将 plot() 添加到 for 循环,然后是“drawnow”。自从我不得不为情节制作动画以来已经有一段时间了,所以我会建议绘制绘图和动画的教程。

于 2010-12-05T09:04:44.397 回答
1

您的代码有点不清楚您要做什么,但您似乎想要创建和绘制一个f(x)具有以下形式的函数:

f(x) = [ x     for 3 <= x <= 4
       [ x^x   for x < 3
       [ -x^x  for x > 4

如果这是您想要做的,您可以使用逻辑索引执行以下操作:

x = 0:0.5:5;  %# 11 points spaced from 0 to 5 in steps of 0.5
y = x;        %# Initialize y
index = x < 3;                   %# Get a logical index of points less than 3
y(index) = x(index).^x(index);   %# Change the indexed points
index = x > 4;                   %# Get a logical index of points greater then 4
y(index) = -x(index).^x(index);  %# Change the indexed points
plot(x,y);                       %# Plot y versus x
于 2010-12-05T21:29:44.417 回答