CVX error:Conversion to double from cvx is not possible解决方案

昨天在做MATLAB仿真的时候遇到了这个问题,真的是解决了好几个小时。

背景:用CVX工具箱做蒙特卡洛实验(就是多次重复实验)

报错:如题

百思不得其解。

解决过程

1.CVX USER'S GUIDE;


他说要把变量声明一下,写成expression variables的形式,于是我就把提示报错行的那块在cvx_begin后声明了一下,但是依然报错;

2.继续搜百度,在cvx论坛里,有人也出现了类似的问题,其他人给出的解决方案是把报错的变量声明成zeros(size)的这种已知矩阵的形式,这样每次重新进这句语句这句语句就重新赋值了,我试了一下,依然失败。

3.那时已经夜深11点了,我已经连续四天都是熬大夜的状态,但是没办法,报错的声音就是这样无情的嘲笑着我。于是我觉得打断点,看看能不能看出点端倪。

我在cvx_begin前和cvx_end后都打了断点。

当时我的代码类似是这样的

¥%……

(断点)cvx_begin

              变量声明部分  (有个b(),complex)

              目标函数部分

             约束部分

             结果部分

             cvx_end

(断点) a(:,1)=norm(b(:,1));   %b是已经声明的cvx变量,就是这句话一直报错

于是我发现第一次进CVX的时候,CVX里声明的变量b是complex型,但是出cvx的时候,变量b就变成cvx型了,这样肯定会报错的

于是我加了clear,代码变成了这样

断点)cvx_begin

              变量声明部分  (有个b(),complex)

              目标函数部分

             约束部分

             结果部分

            clear 各种能在workspace里看见是CVX类型的变量

             cvx_end

(断点) a(:,1)=norm(b(:,1));

但是,依然失败了,变量b的类型还是没有改变为我想要的complex;

好吧,最后就是,我把cvx_end外的变量a,在cvx变量里也声明了。这样他俩都是cvx里的变量,要朱就一起朱,要墨一起墨

well-done;

竟然成功了,玄学,不知为何。。。待解


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值