matlab函数图未给出函数图
我正在模拟一个类似于mosfet的开关。我编写了以下代码,并将其与“x=9:0.1:11”对应。10作为阈值,我期待一个阶梯图,但它只是一条水平线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
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
中的每个项目,然后应用您的条件。很抱歉,我没有足够的声誉。奇怪,应该没有接受的声誉限制。这和投票不一样@如果您认为此答案有助于解决您的问题,请单击绿色复选标记将其标记为“已接受”。这将有助于社区将注意力集中在未回答的问题上。对不起,我没有足够的声誉来回答这个问题。奇怪的是,接受这个问题应该没有声誉限制。这和投票不一样@如果您认为此答案有助于解决您的问题,请单击绿色复选标记将其标记为“已接受”。这将有助于社区将注意力集中在未回答的问题上。