如何做仿真——检查自己算法的有效性???

近期二郎在做一个项目,也写出来代码了,但是现有数据量不足,不能很好地验证算法是否成立,因此二郎要去做一个仿真,来验证算法地有效性。

仿真=解决问题的逆。
解决问题需要有输入,然后得到对应的输出

一般情况下,解决问题 :
利用真实的输入和输出,解出系统的未知参数。
仿真:
设定输入,设定未知参数,产生理想的输出。
为输入和输出添加随机噪声(添加一个按照精度设置的随机变量,用于表示测量的不确定性)。
然后,用解决问题的方法,求未知参数,看求出的未知参数和原设置的未知参数是否一致。

例如:

系统的方程: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是接近我们设定的真实值的,证明我们的方法是有效的。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值