matlab分段函数怎么表示

我要表示一个函数

其中Pomax=9;
请问我的程序哪儿出错了
t=0:0.01:270;
if t<=150
p=7.11.*(t.^0.048);
else p=(exp(3.15-0.021*t))*9;
plot(t,p)
自己调出来了
>> t=0:0.01:270;
>> p=(t<=150).*(7.11*(t.^0.048))+(t>150).*((exp(3.15-0.021*t))*9);
>> plot(t,p)

第1个回答  2014-04-12

你的程序出错问题,主要是每次计算的结果没有存放到对应变量数组内,所以执行结果只是一点,即t=270时的(t,Po)。

解决的办法有:

1、建立自定义函数piecewise(x)    分段函数,即piecewise。m

     在命令窗口下,输入

     >> t=0:0.01:270;
     >> P0=piecewise(t);
     >> plot(t,P0,'r-'),xlabel('t'),ylabel('P_0')

2、用while循环语句,将每次计算值,存放在数组内,然后用plot()画出(t,Po)曲线图。

答题不易,采纳后可发m文件代码。敬请谅解。

追问

我的M文件如下

调用函数如下

 t=0:0.01:270;

>> Po=biye(t);

出来的图是不对的

追答

把[y]=biye(x)改成y=biye(x)就行了

追问

改了没改变,图是这样的

能把你编的M函数文件给我看看吗?谢谢了

追答

请你重新提问好吗?

追问

http://zhidao.baidu.com/question/1603785149251433227.html

第2个回答  2014-04-12
你的p是一个数

p(t)=7.11.*(t.^0.048);
p(t)=(exp(3.15-0.021*t))*9;
这么写试试追问

没有用,图出不来,变量空间不给P分配空间

追答

t=0:0.01:270;
for i=1:length(t)

if t(i)<=150
p(i)=7.11.*(t.^0.048);
else

p(i)=(exp(3.15-0.021*t))*9;
plot(t,p)
这个呢

追问

试了一下还是不行,给t分配了空间但是p还是没有空间的

追答

t=0:0.01:270;
for i=1:27001

if t(i)<=150
p(i)=7.11.*(t(i).^0.048);
else
p(i)=(exp(3.15-0.021*t(i)))*9;
end

end
plot(t,p)

追问

自己调出来了,不过还是谢谢啦

本回答被提问者采纳
相似回答