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