我想知道如何用已定义的字符串制作符号变量。它实际上将帮助我们运行此代码:
N=2
for i=1:N
syms sprintf('r%g',i)
end
运行后出现此错误:
使用symfun.parseString时出错(第50行)
不是有效的变量名。syms中的错误(第166行)
[name,vars] = symfun.parseString(x);
我希望它将r1
和r2
创建为两个符号变量。
答案 0 :(得分:2)
问题是因为如果您想将字符串传递给syms
,则需要使用function syntax rather than the command syntax。使用当前语法(命令语法),MATLAB尝试创建名为'sprintf('r%g',i)'
的符号变量,并且实际上并未评估sprintf
。
相反,函数语法应如下所示。此外,您应该在格式字符串中使用%d
以确保i
是一个整数,否则它将不会成为有效的变量名称。
syms(sprintf('r%d', i))