在MATLAB中绘制一个间隔之间的指数曲线

时间:2014-03-23 10:16:23

标签: matlab math plot

我想在每个区间的基于不同乘数的区间之间绘制一个指数曲线。

我试过这个:

%Plotting of h curve
function PlotQ(Time,h)
    for i=2:size(Time,1)
        for t=Time(i-1):0.1:Time(i)
            plot([Time(i-1), Time(i)],exp(-h(i)*t))
            hold on; 
        end
    end
    ymax = max();
    xlim([1 max(Time)]);
    ylim([-0.5 ymax+0.5]);
    xlabel('Time')
    ylabel('Rate')
end

曲线如下:

enter image description here

不确定我做错了什么..需要一些指导......

新编辑:

T =[0;0.569444444444444;1.06666666666667;2.08611111111111;3.09722222222222;4.11111111111111;5.12500000000000;7.16111111111111;10.2000000000000;20.3444444444444;30.4944444444444];
%Plotting of h and Q
h = [0;0.0187;0.0194;0.0198;0.0215;0.0225;0.0241;0.0316;0.0379;0.0437;0.0452];
PlotQ(Time,h)

2 个答案:

答案 0 :(得分:0)

如果我理解正确,你正在寻找类似的东西。

%Plotting of h curve
function PlotQ(Time,h)
    for i=2:size(Time,1)
        tVector=Time(i-1):0.1:Time(i);
        sizetVector=length(tVector);
        for t=2:sizetVector
            plot([tVector(t-1), tVector(t)],[exp(-h(i)*tVector(t-1)),exp(-h(i)*tVector(t))]);
            hold on
        end    
    end
    ymax = max();
    xlim([1 max(Time)]);
    ylim([-0.5 ymax+0.5]);
    xlabel('Time')
    ylabel('Rate')
end

答案 1 :(得分:0)

我想,这就是你想要的:

function PlotQ(Time,h)
    % Parameters
    res = 0.1;
    n = numel(h);
    % Pre-allocate
    y = cell(1,n);    
    t = cell(1,n);
    % Calculate
    for ii=2:n
        t{ii} = Time(ii-1):res:Time(ii);
        y{ii} = exp(-h(ii)*t{ii});
    end
    % Plot
    t_ = [t{:}];   
    y_ = [y{:}];
    figure;    
    plot(t_,y_);
    axis([1 max(t_) -0.5 max(y_)+0.5]);
    xlabel('Time');   
    ylabel('Rate');
end

它给出了以下情节:

enter image description here