《MATLAB智能算法30个案例分析》书中给出了这样一个语句:
%% 计算迭代的次数Time
Time=ceil(double(solve(['1000*(0.9)^x=',num2str(Tend)])));
这个代码在matlab运行时会报错:
检查对函数 'solve' 的调用中是否缺失参数或参数数据类型不正确
查阅官方文档后发现:
Support for character vector or string inputs has been removed. Instead, use syms
to declare variables and replace inputs such as solve('2*x == 1','x')
with solve(2*x == 1,x)
.
即solve方法已经移除支持字符向量和字符串输入的特性。可以使用syms来代替。
简单的说就是语法变了,可以理解,毕竟这本书已经是10年前的了。
具体的官方文档地址
https://ww2.mathworks.cn/help/symbolic/solve.html?action=changeCountry&s_tid=gn_loc_drop
因此这段代码可以改为:
syms x;
eq = 1000*(0.9)^x == num2str(Tend);
Time=ceil(double(solve(eq,x)));