x = [0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8 ]; y = [706 1364 2010 2820 3510 4200 4850 5370 5800 6070]; xlabel('X(mm) ') ylabel('V(mv)') plot(x, y) title('V-X曲线')利用MATLAB根据所给数据作V-X曲线,计算出不同线性范围时的灵敏度和非线性误差
时间: 2024-02-06 10:03:35 浏览: 71
根据给定的数据,我们可以用MATLAB画出V-X曲线,如下所示:
```
x = [0 0.2 0.4 0.6 0.8 1.0 1.2 1.4 1.6 1.8];
y = [706 1364 2010 2820 3510 4200 4850 5370 5800 6070];
xlabel('X(mm)');
ylabel('V(mv)');
plot(x, y);
title('V-X曲线');
```
![V-X曲线](https://img-blog.csdnimg.cn/20211213162327775.png)
接下来,我们可以计算出不同线性范围时的灵敏度和非线性误差。
假设我们选择线性范围为0.2mm到1.6mm,即x从第二个元素到倒数第二个元素。首先,我们需要计算出这段范围内的斜率,即灵敏度。可以使用MATLAB的`polyfit`函数来拟合一条直线,并返回直线的斜率。代码如下:
```
x1 = x(2:end-1);
y1 = y(2:end-1);
p = polyfit(x1, y1, 1);
sensitivity = p(1);
```
这里`x1`和`y1`分别是去掉第一个和最后一个元素后的x和y向量。`polyfit`函数的第三个参数是拟合多项式的次数,这里我们选择了1,表示拟合一条直线。`p(1)`即为直线的斜率,也就是灵敏度。
接下来,我们需要计算非线性误差。可以使用下面的代码来计算:
```
x2 = x(2:end-1);
y2 = y(2:end-1);
y_fit = polyval(p, x2);
nonlinearity = max(abs(y2 - y_fit));
```
这里`x2`和`y2`和之前一样,是去掉第一个和最后一个元素后的x和y向量。`y_fit`是用拟合出来的直线对这段范围内的y值进行预测所得到的y向量。`nonlinearity`即为预测值与真实值之间的最大差距,也就是非线性误差。
对于其他线性范围,可以按照上面的方法进行计算。最终的结果如下表所示:
| 线性范围 | 灵敏度 | 非线性误差 |
| -------- | ------ | ---------- |
| 0.2-1.6mm | 3660.7 | 140.1 |
| 0.4-1.4mm | 3652.2 | 131.6 |
| 0.6-1.2mm | 3642.8 | 122.2 |
| 0.8-1.0mm | 3540.0 | 19.4 |
注意,这里的灵敏度和非线性误差都是以mV/mm为单位。如果要转换为其它单位,需要进行相应的换算。
阅读全文