matlab函数或变量无法识别

本人matlab辣鸡,请问各位老哥,为什么我在m文件里定义了yita但是在函数文件里无法识别捏

img

img

img

  • 帮你找了个相似的问题, 你可以看下: https://ask.csdn.net/questions/7667415
  • 我还给你找了一篇非常好的博客,你可以看看是否有帮助,链接:用MATLAB实现 的,高斯牛顿法和莱文伯格算法matlab源码,自己写的,完全可以用
  • 你还可以看下matlab参考手册中的 matlab 显示数组详细信息 details
  • 除此之外, 这篇博客: matlab遗传算法工具箱介绍和详细使用方法【matlab优化算法工具箱】中的 遣传算法工具箱应用举例 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • clc
    clear all
    close all
    %% 画出函数图
    figure(1);
    hold on;
    lb=1;ub=2; %函数自变量范围【1,2ezplot('sin(10*pi*X)/X',[lb,ub]);   %画出函数曲线
    xlabel('自变量/X')
    ylabel('函数值/Y')
    %% 定义遗传算法参数
    NIND=40;        %个体数目
    MAXGEN=20;      %最大遗传代数
    PRECI=20;       %变量的二进制位数
    GGAP=0.95;      %代沟
    px=0.7;         %交叉概率
    pm=0.01;        %变异概率
    trace=zeros(2,MAXGEN);                        %寻优结果的初始值
    FieldD=[PRECI;lb;ub;1;0;1;1];                      %区域描述器
    Chrom=crtbp(NIND,PRECI);                      %初始种群
    %% 优化
    gen=0;                                  %代计数器
    X=bs2rv(Chrom,FieldD);                 %计算初始种群的十进制转换
    ObjV=sin(10*pi*X)./X;        %计算目标函数值
    while gen<MAXGEN
       FitnV=ranking(ObjV);                               %分配适应度值
       SelCh=select('sus',Chrom,FitnV,GGAP);              %选择
       SelCh=recombin('xovsp',SelCh,px);                  %重组
       SelCh=mut(SelCh,pm);                               %变异
       X=bs2rv(SelCh,FieldD);               %子代个体的十进制转换
       ObjVSel=sin(10*pi*X)./X;             %计算子代的目标函数值
       [Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群
       X=bs2rv(Chrom,FieldD);
       gen=gen+1;                                             %代计数器增加
       %获取每代的最优解及其序号,Y为最优解,I为个体的序号
       [Y,I]=min(ObjV);
       trace(1,gen)=X(I);                            %记下每代的最优值
       trace(2,gen)=Y;                               %记下每代的最优值
    end
    plot(trace(1,:),trace(2,:),'bo');                            %画出每代的最优点
    grid on;
    plot(X,ObjV,'b*');   %画出最后一代的种群
    hold off
    %% 画进化图
    figure(2);
    plot(1:MAXGEN,trace(2,:));
    grid on
    xlabel('遗传代数')
    ylabel('解的变化')
    title('进化过程')
    bestY=trace(2,end);
    bestX=trace(1,end);
    fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])
    
    

    在这里插入图片描述

  • 您还可以看一下 硬核野生技术咨询客服小李老师的matlab零基础入门路径规划城市遍历机器人路径等问题课程中的 深入学习结构体小节, 巩固相关知识点