电子产业一站式赋能平台

PCB联盟网

搜索
查看: 1689|回复: 5
收起左侧

fmincon 优化时出现数据变量类型错误

[复制链接]

591

主题

1774

帖子

5769

积分

四级会员

Rank: 4

积分
5769
发表于 2023-2-10 17:51:10 | 显示全部楼层 |阅读模式
在命令窗口中输入
x0=[0.7,0.8,0.1,0.2];
options=optimset('largescale','on');
[x,fval]=fmincon(@eg,x0,[],[],[],[],[0.65,0.65,1e-1,1e-1],[0.95,0.95,0.3,0.3],[],options);
系统提示:FMINCON requires all values returned by user functions to be of data type double。
我的M文件如下:
function F = eg(x)
syms w  r2 r3 e2 e3
x=[r2 r3 e2 e3];
u2=0.15;u3=0.15;
j1=0.0059;j2=u2*j1;j3=u3*j1;k1=j1*(100*pi)^2; k2=k1*(r2)^2*u2; k3=k1*(r3)^2*u3; c2=e2*2*(j2*k2)^0.5; c3=e3*2*(j3*k3)^0.5;     
X=k1/(-j1*w^2+k1-((j2*w^2*(1i*w*c2+k2))/(-j2*w^2+1i*w*c2+k2)+   (j3*w^2*(1i*w*c3+k3))/(-j3*w^2+1i*w*c3+k3)));
f=abs(X);
x1=810*2*pi/60;
k=1;
h=5;
  for j=1:100
    w=x1;
    x1=x1+h*(j-1);
    x2=x1+h;
    x3=x2+h;
    fl=subs(f,w,x1);            %极大值左边的一个数
    fm=subs(f,w,x2);            %极大值
    fr=subs(f,w,x3);            %极大值右边的一个数
    if fm>=fl && fm>=fr      %选择极大值  
        fmax(k)=fm;
        x_opt(k)=x2;
        k=k+1;
         F=mean(fmax);         %极大值的平均值
    end
end

      我认为可能与M文件中的syms变量有关。请各位仁兄多多指导啊!
回复

使用道具 举报

633

主题

1927

帖子

8107

积分

联盟顾问

Rank: 3Rank: 3

积分
8107
发表于 2023-2-10 17:51:34 | 显示全部楼层
楼主这个问题解决了吗
回复 支持 反对

使用道具 举报

0

主题

804

帖子

517

积分

二级会员

Rank: 2

积分
517
发表于 2023-2-10 17:52:03 | 显示全部楼层
解决了
回复 支持 反对

使用道具 举报

0

主题

825

帖子

674

积分

二级会员

Rank: 2

积分
674
发表于 2023-2-10 17:52:27 | 显示全部楼层
lz能说一下解决方法吗?我也遇到这个问题了
回复 支持 反对

使用道具 举报

0

主题

804

帖子

517

积分

二级会员

Rank: 2

积分
517
发表于 2023-2-10 17:52:54 | 显示全部楼层
请问楼主怎么解决的
回复 支持 反对

使用道具 举报

35

主题

892

帖子

1091

积分

三级会员

Rank: 3Rank: 3

积分
1091
发表于 2023-2-10 17:53:42 | 显示全部楼层
求,怎么解决
回复 支持 反对

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表