如何使符号变量循环,因为我们想要
28次意见(过去30天)
显示旧的注释
接受的答案
史蒂文的主
2022年7月8日
那么,我可以假设在matlab中没有方法来创建符号变量只有已知的是no的变量。
在这种情况下,而不是创建a1, a2等或使用
eval
就叫
信谊
.
N = 4;
A = sym(“一个”, [1, n])
现在你可以用A(1)
, A(2)为
等。
B = a (1)+2* a (2)+ a (3).^3+ a (4)./4
这使得替换A元素的值变得很容易。
subs(B, A, [16 9 4 1])
我们来检查一下
潜艇
通过手动执行替换,给出了正确的结果。
检查= 16 + (2*9)+ (4^3)+ (1/4)
检查== 393/4
0评论
更多答案(3)
Aiswarya
2022年7月7日
错误无法识别的变量出现是因为
Str2sym不添加变量
包含在指向工作区的字符串中。所以当你尝试使用a1时,它会抛出一个错误。
如果你真的想添加具有符号名称的变量,如a1,a2,a3,a4…然后你可以使用这样的循环:
为i = 1:4
eval (sprintf ('a%d = i',我));
结束
sprintf的第二个参数不是'i',你可以给出一个想要的值。
但是,请注意eval可能会很慢,为此目的使用matlab数组(序列或数据数组)要好得多。例如:
A = 0 (1,4);
为i = 1:4
A (i) = i%你可以用你想要的值替换它,而不是分配I
结束
您可以通过a(1),a(2)等访问这些变量。