近期二郎在做一个项目,也写出来代码了,但是现有数据量不足,不能很好地验证算法是否成立,因此二郎要去做一个仿真,来验证算法地有效性。
仿真=解决问题的逆。
解决问题需要有输入,然后得到对应的输出
一般情况下,解决问题 :
利用真实的输入和输出,解出系统的未知参数。
仿真:
设定输入,设定未知参数,产生理想的输出。
为输入和输出添加随机噪声(添加一个按照精度设置的随机变量,用于表示测量的不确定性)。
然后,用解决问题的方法,求未知参数,看求出的未知参数和原设置的未知参数是否一致。
例如:
系统的方程:y=kx;
未知参数:k;
仿真
%matlab code clear clc x = (0:1:300);%设置输入 k = 6;%假定参数 y = k*x;%计算出输出 [~,num] = size(x); x_noice = x + 0.1*rand(1,num);%为x添加噪声 y_noice = y + 0.1*rand(1,num);%为y添加噪声 k_noice = y_noice*x_noice'*inv(x_noice*x_noice');%矩阵形式的最小二乘法
结果
可以看到,我们求出的带噪声的k_noice是接近我们设定的真实值的,证明我们的方法是有效的。