我写的代码
function v=va(t)if t<0
v=0;
elseif t<=8
v=10*t.^2-5*t;
elseif t<=16
v=624-5*t;
elseif t<=26
v=36*t+12*(t-16).^2;
else
v=2136*exp(-0.1*(t-26));
end
是想写一个分段函数
但是为什么当我把变数t带进去的时候会发生
这种情况?当t小于9的时候还蛮老实的用正确的函数,但是若是t=9的时候连小于8的那些数字也跟着一起用范围9那个函数计算了? 苦恼啊 我的if语句哪里有问题?
而且我用plot作图的时候也老是显示
我是新手 请各位大虾指导我下 谢谢啦
对 if 语句的条件,如果是一个向量,则必须所有元素非零才为真。
所以,
if t<0,为假,不执行
elseif t<=8,为假,不执行
elseif t<=16,,为真,执行该部分代码,即 v=624-5*t
这就是你得到图中结果的原因。
追问我的变量里面有1 2 3 4 5 6 7 8是属于第二个范围内也不执行运算吗?
追答当然会执行 t> t=[1:8]'
t =
1
2
3
4
5
6
7
8
>> va(t)
ans =
5
30
75
140
225
330
455
600
如果按照我的思路来写这个分段方程要怎么写呢?
用那个if语句不能直接把条件给限制好吗?
我没改变你的if啊。你要在函数中处理传入参数是矩阵的情况,否则条件语句有错。
t=[-1 0 1 2]
if t < 0
返回否。其他的依次类推。
matlab分段函数的问题(初学者)
对 if 语句的条件,如果是一个向量,则必须所有元素非零才为真。所以,if t<0,为假,不执行 elseif t<=8,为假,不执行 elseif t<=16,,为真,执行该部分代码,即 v=624-5*t 这就是你得到图中结果的原因。
怎样求matlab中分段函数的函数值?
如果函数只分了两段的话可以用switch模块,如果分三段的话可以用if模块,但是使用if模块的时候需要跟merge模块以及If Action Subsystem模块结合,还有一种方式就是用matlab fcn模块,如图所示:例子:已知函数f(x)= 求f(3)的值。解:由3∈(-∞,6),知f(3)=f(3+2)=f(5),又5∈(-∞,6...
matlab画分段函数?
1、由于x值不明确,所以无法用分段函数求出Br值;2、设置afa为数组,好像是没有理由的,我认为afa应该是一个数 3、输出sum(Br)值,应储存到BBB数组里,而不是赋值给BBB变量(因为最后显示只有一个数)修改代码后,可以得到如下图形。
请教各位怎样用matlab定义一个分段函数
在MATLAB中定义一个分段函数的关键是明确其表达式并划分各个区间。首先,确定函数的x取值范围,例如0到3,这是分段函数的基础。接下来,对于y值的计算,我们需要为每个区间定义特定的函数表达式。这些表达式会乘以x在该区间内的逻辑值(1表示在范围内,0表示不在),确保按照区间划分进行计算。具体步骤如下...
matlab分段函数画不出图
错误原因在于:你写的function y=f(x)只对x为单个数值才有效,而你画图时x=-100:100是一个矩阵,所以出现提示的错误。修改方法为修改function y=f(x),应该把x当成数组,然后用循环的方法,进行上面的分段判断,这个比较初级,就交给你自己写了。这里提供一种体现matlab运算的方法,直接将y=f(x)...
matlab分段函数怎么编写
1、首先在电脑桌面上打开MATLAB软件。2、然后点击matlab软件左上方的新建按钮,建立一个脚本文件。3、定义变量:a1=1.5;a2=2.5;X=0:0.001:5 4、建立循环,求解分段函数。5、采用piot(x,y)指令画图。6、展示最终的分段函数效果。
matlab分段微分方程组求解
用matlab求解分段微分方程组,可以这样来考虑。1、建立分段函数,ode_fun1(t,y);ode_fun2(t,y);ode_fun3(t,y)2、分三次用ode45求解,其【t,x,y】的数值[t1,y1]=ode45(@ode_fun1,tspan,X0)[t2,y2]=ode45(@ode_fun2,tspan,X0)[t3,y3]=ode45(@ode_fun3,tspan,X0)3、最后用...
关于matlab定义分段函数的一个简单问题
我觉得应该这样:function Y=danbianzhishu(X)n=length(X);Y=[];for i=1:n if X(i)>0 Y=[Y,exp(X(i))];else Y=[Y,0];end end 你写的程序,对于单个数值应该是正确的,输入参数如果是向量的话,是会错误的
matlab分段函数表达的问题
for i=1:lenif x4(i)>=103.104&x4(i)<149.266;y4(i)=-0.0009*(x4(i)-103.104).^2-0.2886*(x4(i)-103.104)+50;elseif x4(i)>=149.266&x4(i)<197.62;y4(i)=0.0017*(x4(i)-149.266).^2-0.2532*(x4(i)-149.266)+36.5873;elseif x4(i)>=197.62&x4(i)...
关于matlab的几道简单的问题
1, 这是个分段函数:function y=f(x)if x<=1 y=x;elseif x<10 y=2*x-1;else y=3*x;end return;然后对于任意x值,只要输入f(x),例如求x=5时,命令行输入 >>f(5)ans= 9 2 sum=0;for n=1:30 sum=sum+factorial(n)3,这个不用for循环也可以算的:x=100:200;m=isprime(x...