【运动人体姿态提取】基于GA优化的从二维关节点坐标中估计三维人体姿势的MATLAB仿真

1.软件版本

MATLAB2019a

2.部分核心代码

clc;
clear;
close all;
warning off;
addpath 'func\'
addpath 'func\GA_toolbox\'

 
%初始spread 
mu     = 1;

%根据遗传算法进行参数的拟合
MAXGEN = 20;
NIND   = 50;
Chrom  = crtbp(NIND,1*10);
%14个变量的区间
Areas  = [0.5;
          1.5];

FieldD = [rep([10],[1,1]);Areas;rep([0;0;0;0],[1,1])];

LR     = zeros(NIND,1);
MU2    = zeros(MAXGEN,1);
gen              = 0;

for a=1:1:NIND 
    a
    LR(a)    = mu;       
    %计算对应的目标值
    errs     = func_obj(LR(a));
    E        = errs;
    J(a,1)   = E;
end

Objv  = (J+eps);
gen   = 0; 

while gen < MAXGEN;   
      gen
     
      P1 = 0.9;
      P2 = 1-P1;

      FitnV=ranking(Objv);    

      Selch=select('sus',Chrom,FitnV);    
      Selch=recombin('xovsp', Selch,P1);   
      Selch=mut( Selch,P2);   
      phen1=bs2rv(Selch,FieldD);   
      for a=1:1:NIND  
          if  gen == 1
              LR(a)    = mu;               
          else
              LR(a)    = phen1(a,1);      
          end
          
          %计算对应的目标值
          errs    = func_obj(LR(a));
          E       = errs;
          JJ(a,1) = E;
      end 
      Objvsel=(JJ+eps);    
      [Chrom,Objv]=reins(Chrom,Selch,1,1,Objv,Objvsel);   
      gen=gen+1; 

      %保存参数收敛过程和误差收敛过程以及函数值拟合结论
      MU2(gen)   = mean(LR);
      Error(gen) = mean(JJ);
      deltaf     = Error(gen);
end 
 
MU_best = MU2(end);      
MU_best

save best_mu.mat MU_best 
 
% figure;
% plot(MU2(3:end),'b-o');
% xlabel('Iteration Number');
% ylabel('mu');
% grid on;
 

 

3.仿真结论

 

 

5.参考文献

A09-51

6.完整源码获得方式

方式1:微信或者QQ联系博主

方式2:订阅MATLAB/FPGA教程,免费获得教程案例以及任意2份完整源码

猜你喜欢

转载自blog.csdn.net/ccsss22/article/details/124281317