如何使用matlab实现分段函数
实现如下的分段函数:m={t0≤t<1−t+21<t≤20.1其他m=\left\{\begin{array}{rcl}t & & {0 \leq t <1}\\-t+2 &
·
实现如下的分段函数:
m = { t 0 ≤ t < 1 − t + 2 1 < t ≤ 2 0.1 其 他 m=\left\{ \begin{array}{rcl} t & & {0 \leq t <1}\\ -t+2 & & {1 < t \leq 2}\\ 0.1 & & {其他}\\ \end{array} \right. m=⎩⎨⎧t−t+20.10≤t<11<t≤2其他
方法一:
# 先写一个函数脚本;
function m=fenduanhanshu(t)
m=t.*(t>=0 & t<1)+(-t+2).*(t>1 & t<=2)+0.1.*(t<0 | t>2) # 注意此处是点乘,否则会报错内部矩阵维度不一致;
end
此处语句解释:当表达式中的(t>=0 & t<1)成立时,此时的布尔表达式值为True,值为1,t*(t>=0 & t<1) = t1;此时表达式中的布尔表达式(t>1 & t<=2)和(t<0 | t>2)都不成立,取0参与运算,故此时m=t1+(-t+2)0+0.10 = t;
# 在command window中调用此函数,并作图;
>> x=0:0.01:2;
>> m=fenduanhanshu(t);
>> plot(m,t)
作图如下:
方法二:
# 写一个脚本后直接运行;
t=-1:0.01:3; # 自己根据需要设置;
m=zeros(size(t)); # 生成与矩阵t相同大小的全零矩阵;
for i=1:length(t) # 数组长度(即行数或列数中的较大值);
if (t(i)>=0)&(t(i)<=1)
m(i)=t(i);
elseif (t(i)>1)&(t(i)<=2)
m(i)=-t(i)+2;
else
m(i)=0.1;
end
end
plot(t,m,'r') # 'r'表示线为红色;
grid on # 网格
>> t=-1:0.01:3;
>> size(t) # 当只有一个输出参数时,返回一个行向量,该行向量的第一个元素是矩阵的行数,第二个元素是矩阵的列数;
ans =
1 401
B=zeros(n) # 生成n×n全零阵;
B=zeros(m,n) # 生成m×n全零阵;
B=zeros([m n]) # 生成m×n全零阵;
B=zeros(d1,d2,d3……) # 生成d1×d2×d3×……全零阵或数组;
B=zeros([d1 d2 d3……]) # 生成d1×d2×d3×……全零阵或数组;
B=zeros(size(A)) # 生成与矩阵A相同大小的全零阵;
n=length(A) # 如果A为非空数组,返回行数和列数两者之间数值较大的那一个值,即相当于执行了max(size(A));
# 如果A为空数组,则返回0;
# 如果A是一个向量则返回A的长度;
n=numel(A) # 该语句返回数组A中元素的总数;
更多推荐
所有评论(0)