❶ 大神们如何用Matlab 神经网络 拟合出一个两输入一输出的曲线 公式我写进单片机里 不剩感激.
不用神经网络这么麻烦,matlab里面有一个专门用来做拟和的语句吧。没记错的话是polyfit
❷ 单片机最多可以拟合多少个点(直线方程)
256个吧,单片机的数据一般(51单片机)都是用8个二进制位表示的数简,8个二进制位可以构成2^8=256种组合,所以可以拟合256个点。
如果有更高游物位数的单片机,则可以拟合更多的点,这薯磨裤跟单片机的位数有关的。。
❸ 单片机最多可以拟合多少个点(直线方程)
256个吧,单片机的数据一般(51单片机)都是用8个二进制位表示的,8个二进制位可以构成2^8=256种组合,所以可以拟合256个点。
如果有更高位数的单片机,则可以拟合更多的点,这跟单片机的位数有关的。。
❹ 单片机最多可以拟合多少个点(拟合成直线方程的)
1.单片机拟合的重点不在于多少个点(一个都没有当然不行,这里是排除极端现象),而在于拟合算法;
2.目前市面上的单片机有8位,16位,32位等等,价格和运算能力都很不错,有些还有自己的支持库,因此,纯粹从单片机考虑不是太大的问题;
3.一般的做法是:先采集这些数据(尽可能多),利用仿真软件如matlab进行算法仿真,根据这个仿真可以直接的了解到需要拟合该直线的最少数据,根据此数据选择或者优化算法,然后根据此算法选择适当价格和运算能力的单片机;根据单片机单位时间(即你需要处理的最小周期)采集数据,由此可以确定下来最终的实现算法
4.一般的方法有:插值法,最小二乘法(用法最为广泛,实现也容易,多用于计算机),方差逼近法等等
❺ 基于单片机的信号发生器,频率提高时,正弦波周围有褶皱,不光滑。
这种现姿毕慧在是采样点太少,也就是线性拟合不好。低频时可以高频时不可以,说明低频与高频的采样率是一样的,那在低频是采样点就多很多。
处理的办法就是增加采样点, 如输出频率高到一定时,就不要改采样点了,而是修改频率的周期,保持采样点数,如果单片机处理不过来,就要换用高速单片机,如果你的频高数铅要上MHZ,那非高速DAC加迹答FPGA或DSP了。
❻ 单片机采集信号,直接输出线性度不好(如图)。如何加个公式使其线性度变好(如白色线)
公式是够呛,你这得公式加补偿的方式做了,用ad采集信号的话,先找一个比例的系羡谈核数,在用ad采集的数称这个系数在 加或减侍游去兄掘补偿值,补偿得实际去摸索了,多做下试验吧
❼ 单片机仪表代码功能怎么实现
在仪器仪表里,这种校准是最常用的。
最好学习一下C语言编程,那样实现起来灵活一点。
这个实现过程大致是这样的:
程序开始的时候先检测按键,看是否功能键(或者是组合键)被按住,如果是进入调用校准程序,如果不是,进入正常工作程序。
校准程序主要是根据校准曲线来实现的,比如说,线性关系的校准,那么就是读两个标准值,然后用直线来拟合,过程是,先显示出第一个校准点,这时校准者就要给仪表输入标准值(就像你说的加入2000克的砝码),然后按一下按键,这时单片机就采集了第一个AD值,与第一个物理量对应。然后显示第二个校准点,校准者再输入第二个标准值,再按下按键,单片机采集第二个AD值,与第二个量对应。对于线性关系来说,这时宏敏校准就可以完成了,因为两点就可以确定一条直线了,其它点也能确定了。
校准程序最后根据这两个点算出拟合曲线的系数,并写入存储器,供以后测量使用。
工作程序就是读出校准时存储蔽蠢枝的参数,然后按照拟合曲线计算出当前值。
说了这么多档雹,希望能对你有点帮助。。。
❽ xdata 是什么
xdata表示vucid这个变量存放在外部存储区中。xdata,为定义在单片机00h-ffh之外的地址内,就是指外部存储空间。
对于这条多项式,更正确的描述是这条多项式附合任何4个限制。限制可以是一点(x,y)、角度或曲率(即半径的倒数 1/R)。角度和曲率的限制通常在曲线的终端,因此称为终端条件。为了样条(spline) 的交接平滑,通常会用到全等的终端条件。
也可以增加如曲率变化等高阶约束。例如,在高速公路立体交叉点cloverleaf的设计中,可以用来理解当汽车绕着交叉点运动时作用在汽车上的力,并依此设定合理的限定时速。
拟合直线或多项式曲线:
在笛卡尔平面上是一条直线,而这条直线的斜率是a。因为任何两点可以决定一条直线,因此总能找到次数不多于1的多项式来串起任何两个x值相异的点。
如果把多次式的次数增加到2。那么只要给定x值各异的3点,总会有次数不多于2的多项式可以把它们串起。
如果把多次式的次数再增加到3。那么只要给定x值各异的4点,总会有次数不多于3的多项式可以把它们串起。
以上内容参考:网络-数据拟合
❾ 请教用C++在430单片机里编程实现以下功能
直接用单片机做直线拟合。
假定输入N 对 y[i] 和 x[i],i=0,1,2...N-1。
配 直线方程 y=kx+b
#include <stdio.h>
#include <stdlib.h>
void main()
{
double x[]={1,2,3,4,5,6,7,8,9,10};
double y[]={0.9,2.1,3.0,4.0,5.1,5.9,7.0,8.1,8.9,10.0};
int N=10;
double A=0.0,B=0.0,C=0.0,D=0.0;
int i,j;
double k,b;
// 这里插入
// 给出个数据个数,动态分配x,y单元
// 读入 x,y数据输入
// 当然控制A/D转换,取得数据也可以
// 直线拟合如下
for (i=0;i<N;i++) A = A+ y[i];
for (i=0;i<N;i++) B = B+ x[i];
for (i=0;i<N;i++) C=C + x[i]*y[i];
for (i=0;i<N;i++) D=D + x[i]*x[i];
// y=kx + b;
k = (A * B - C * N)/(B * B - D * N);
b = (B*C - A * D) / (B * B - D * N);
printf("y=%lf * x + %lf\n",k,b);
}
❿ 如何采用单片机和数字摄像头完成图像采集和处理,包括图像的边缘提取和圆心的计算,有没有代码,谢谢指点
用一般单片机完成的可能性不大,主要是速度跟不上。
PC上的同样问题,曾经做过。
1. USB采集
2. 二值化图像
3. 去除噪声
4. 计算重心
5. 根碧丛据中心初步求悔迅樱出边缘
6. 用最小二乘法拟合,精确求昌肆出圆心和半径
以上的内容如果是实时动态跟踪,至少要P4级别的机器。