我有第一个结构,如:
struct1.Vx.Value=10;
struct1.Vy.Value=2;
在第二种结构中,我将操作写为字符串:
struct2.param1.map='sqrt(Vx^2+Vy^2)';
struct2.param2.map='Vx+Vy';
最有效的设置方法是什么:
struct2.param1.value= [sqrt(10^2+2^2)=10.198]
struct2.param2.value= [10+2=12]
我在struct1上使用assignin
和fieldnames
找到了一个解决方案来创建变量Vx = 10和Vy = 2
然后,我在struct2上使用eval()
来执行操作
好吧,它有效,但我不喜欢这个解决方案阅读eval()...
有没有更有效的方法来做我想要的事情?
谢谢!
答案 0 :(得分:0)
我设法找到一个好的解决方案,以不同的方式形成我的数据:
s.Vx = 10;
s.Vy = 2;
Map1 = 'sqrt( s.Vx^2+ s.Vy^2)';
FunctionMap1 = str2func( [@(s) Map1] );
然后我可以简单地用以下方法评估我的函数句柄:
Value = FunctionMap1(s)