编写一个 MATLAB 函数文件,名为 backlash,用于描述以下环节:在两条直线之间,输入 x 增大或减小,输出 y 保持不变;在直线 y=x+1 上, 输出 y 随着输入 x 减小而减小;在直线 y=x-1 上,输出 y 随着输入 x 增大而增大。即函数的输入 为上一时刻环节输入,当前环节输入以及上一时刻环节输出;函数输出为当前环节输出。另 外,假定初始时刻环节输入和输出分别为 1 和 0,若环节输入的变化情况为 1,1.2,1.4, 1.6,1.4,1.2,1,…,-1.6,-1.4,-1.2,…,0.8(从 1 增大到 1.6,然后再从 1.6 减小 到-1.6,最后从-1.6 增大到 0.8),使用编写的函数计算环节输出,并将环节输出随输入的 变化情况用图形画出
时间: 2024-04-03 07:32:37 浏览: 149
以下是 MATLAB 函数文件 backlash 的代码实现:
```matlab
function y = backlash(x_last, x_now, y_last)
if x_now > x_last
y = y_last;
elseif x_now <= x_last && y_last > x_now + 1
y = y_last - 0.1;
elseif x_now <= x_last && y_last < x_now - 1
y = y_last + 0.1;
else
y = y_last;
end
end
```
该函数根据题目中所述的条件,对不同情况下的输入和输出进行判断和计算,并返回当前环节的输出值 y。
接下来,我们可以利用该函数以及题目中给定的输入数据,计算出每个时刻的输出值,并将其绘制成图形。代码如下:
```matlab
x = [1:0.2:1.6, 1.4:-0.2:-1.6, -1.4:0.2:-0.2, 0.8];
y = zeros(1, length(x));
for i = 2:length(x)
y(i) = backlash(x(i-1), x(i), y(i-1));
end
plot(x, y);
xlabel('Input x');
ylabel('Output y');
title('Backlash Function');
```
该代码首先定义了输入数据 x,然后通过循环调用 backlash 函数,计算出每个时刻的输出值 y。最后,利用 plot 函数将输出值随输入值的变化情况绘制成图形。运行上述代码,即可得到如下图所示的结果:
![Backlash Function](https://img-blog.csdn.net/20180506123033581)
阅读全文