0

間隔から特定の数値を取得してテストし、後で 1 つのグラフの下に別の関数を作成できるようにする方法を知りたいです。たとえば (この場合は「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:10と 以来、この関数をグラフ化する方法を理解していないようですt = 0:.1:10。を使わずにこれを行う方法は知っていますが、が含まれていて、 と比較して間隔が異なるとt、迷子になります。tx

4

2 に答える 2

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 に答える
1

区分多項式を探しているかもしれません: http://www.mathworks.com/help/techdoc/ref/mkpp.html

それ以外の場合は、いわば「x」と「y」の 2 つのベクトルを作成し、x を反復処理して条件と結果を適用して y を埋め、y を x に対してプロットすることをお勧めします。これにより、プロットを保持する必要がなくなります。

描画をアニメーション化する場合は、for ループに plot() を追加し、その後に「drawnow」を追加します。プロットをアニメーション化する必要があったのは久しぶりなので、 drawow とアニメーションのチュートリアルをお勧めします。

于 2010-12-05T09:04:44.397 に答える