【问题标题】:matlab function plot not giving function graphmatlab函数图没有给出函数图
【发布时间】:2016-06-25 20:48:24
【问题描述】:

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

我不明白有什么区别。请帮我获取步骤图。

【问题讨论】:

  • 您需要遍历vgsvds 中的每个项目,然后然后应用您的条件。

标签: matlab function plot piecewise


【解决方案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))

【讨论】:

  • 对不起,我没有足够的声誉。
  • 奇怪,接受应该没有声望限制。这和点赞不一样。 meta.stackexchange.com/questions/5234/…
  • @DeepakSoni 如果您认为此答案有助于解决您的问题,请单击绿色复选标记将其标记为“已接受”。这将有助于社区将注意力集中在未回答的问题上。
猜你喜欢
  • 2021-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多