如何使符号变量循环,因为我们想要

28次意见(过去30天)
i = 1:4
p = str2sym (strcat (“一个”num2str(我)))
信谊p
disp (p)
结束
p =
p
p =
p
p =
p
p =
p
a1
未识别的函数或变量'a1'。
如果我调用a1,它会说它无法识别。那么如何在这种格式中创建多个变量呢?

接受的答案

史蒂文的主
史蒂文的主 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
B =
这使得替换A元素的值变得很容易。
subs(B, A, [16 9 4 1])
ans =
我们来检查一下 潜艇 通过手动执行替换,给出了正确的结果。
检查= 16 + (2*9)+ (4^3)+ (1/4)
Check = 98.2500
检查== 393/4
ans =逻辑
1

更多答案(3)

Aiswarya
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)等访问这些变量。
1评论
Pk时
Pk时 2022年7月8日
在第一个代码(eval)中,类a1,a2…它们不是符号变量。
那么,我可以假设在matlab中没有方法来创建符号变量只有已知的是no的变量。

登录评论。


Hrusheekesh
Hrusheekesh 2022年7月11日
嗨verma
我知道您想用一个命令创建多个符号变量。
下面的示例将说明如何实现相同的目标
信谊(信谊(“一个”, [1 10]))
详情请参阅 创建符号变量 有关如何创建符号变量的详细信息。
2的评论
沃尔特·罗伯森
沃尔特·罗伯森 2022年9月27日
Syms (sym())以符号方式构造名称 而且 将各个变量放入工作区。如果你
信谊A [1 10]
然后构造符号变量,并将它们的向量赋给matlab变量a,但a1 a2等等没有单独添加到matlab工作空间。

登录评论。


JVan
JVan 2022年9月27日
如果你想在for循环中执行,也可以这样做。这里我只是选择n=3,但这是任意的。
n = 3
N = 3
为n的每个值创建一个符号变量
i = 1: n
信谊([“x”num2str(我)))
结束
现在可以调用syms来查看是否添加了所有变量
信谊
符号变量是x1 x2 x3

2022世界杯八强谁会赢?


释放

R2022a

世界杯预选赛小组名单社区寻宝

在MATLAB Central中找到宝藏,并发现社区如何帮助您!世界杯预选赛小组名单

开始狩猎!

Baidu
map