matlab函数图不给出函数图

matlab function plot not giving function graph

我正在模拟一个类似于 mosfet 的开关。我编写了以下代码并将其绘制为 "x=9:0.1:11"。 10 是我期待阶梯图的阈值,但它只是一条水平线。

function ids = mosfet(vgs,vds)
    if vgs>=10
        ids = vds/0.028;
    else
        ids = 0;
    end
end

同样,当我将函数更改为以下时,它会给我 y=x 图。

 function ids = mosfet(vgs)
    ids=vgs;
 end

我不明白有什么区别。请帮我得到步骤图。

您的函数仅适用于标量(单个值)。 Matlab 通常使用向量和矩阵。 您的示例输入 x=9:0.1:11 是一个向量而不是单个值。

要使您的函数在 vgs 是向量或矩阵且 vds 是标量时起作用,您应该这样修改它:

function ids = mosfet2(vgs,vds)
    %check that vds is a scalar and not something else
    if length(vds)>1
        error('vds must be a scalar!')
    end

    %the actual math
    ids=zeros(size(vgs))      %create a matrix 'ids' same size as 'vgs'
                              %all initialized as zero
    ids(vgs>=10)=vds/0.028    %set new value for all 'vgs' indices >10
end

您可以使用以下方法绘制曲线:

x=9:0.1:11
plot(x,mosfet2(x,1))