如何绘制由i索引的一系列函数的曲线

时间:2015-01-07 16:34:52

标签: matlab function math

我试图在同一图中的十个函数f_i(t)序列的区间[60,110]中绘制图形,其定义将从下面的代码中清楚:

figure
i=1;
while i<=10;
    P_i=abs(sin(i));
    r_i=0.005*abs(cos(i.^2));
    y=@(i,t)P_i*exp(r_i*t)/(1+P_i*(exp(r_i*t)-1));
    % disp([(y(i,67));(y(i,68));(y(i,69))]');
    s=linspace(60,110,51);


        i=i+1;
    continue;
end;

我运行了一段代码并且它有效。如您所见,我可以创建一个单独的函数y(i,t),其中i是一个整数1<=i<=10,而t是一个连续变量。但是如何在上面的代码中构造单个变量y_i的十个函数t并在同一图中绘制它们的图形,因此它将由十个函数的图组合在一起。我怎样才能实现它?

由于

1 个答案:

答案 0 :(得分:2)

首先对您的代码进行一些小修改。 P_ir_i也是函数,因此将它们定义为函数。这样您只需要定义一次函数。除了像你一样使用循环,它很容易导致错误。 i是想象单位,你没有初始化它。请改用for循环,避免使用i

P_i=@(i)abs(sin(i));
r_i=@(i)0.005*abs(cos(i.^2));
k=1:10;
t=60:101;
y=@(i,t)P_i(i)*exp(r_i(i)*t)/(1+P_i(i)*(exp(r_i(i)*t)-1));

要绘制具有所有值的矩阵:

M=nan(numel(ik),numel(it));
for ik=1:numel(k)
    for it=1:numel(t)
        M(ik,it)=y(k(kx),t(it));
    end
end

最后绘制它。如果你想要plot(k,M)plot(t,M),我真的不明白,但是一个应该是正确的。