matlab函数图未给出函数图

matlab函数图未给出函数图,matlab,function,plot,piecewise,Matlab,Function,Plot,Piecewise,我正在模拟一个类似于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=v

我正在模拟一个类似于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))

您的函数仅适用于标量(单个值)。 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))

您需要循环查看
vgs
vds
中的每个项目,然后应用您的条件。您需要循环查看
vgs
vds
中的每个项目,然后应用您的条件。很抱歉,我没有足够的声誉。奇怪,应该没有接受的声誉限制。这和投票不一样@如果您认为此答案有助于解决您的问题,请单击绿色复选标记将其标记为“已接受”。这将有助于社区将注意力集中在未回答的问题上。对不起,我没有足够的声誉来回答这个问题。奇怪的是,接受这个问题应该没有声誉限制。这和投票不一样@如果您认为此答案有助于解决您的问题,请单击绿色复选标记将其标记为“已接受”。这将有助于社区将注意力集中在未回答的问题上。