2013-12-12 75 views
1

我有一个第一结构像一个字符串:Matlab的评估包含操作

struct1.Vx.Value=10; 
struct1.Vy.Value=2; 

在第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] 

我找到了解决方案使用assigninfieldnames上struct1到创造e变量Vx = 10和Vy = 2
然后,我在struct2上使用eval()来执行操作。
好吧,它的工作原理,但我不喜欢这个解决方案阅读eval()上说什么...

有没有更有效的方法来做我想要的?

谢谢!

+0

我不认为你会得到任何解决方案,在“eval”中都是“不错的”... – Shai

+0

感谢您的回答。也许我应该看'matlabFunction'? [链接到帮助](http://www.mathworks.fr/fr/help/symbolic/matlabfunction.html) – Rascarcapac

回答

0

我设法找到一个很好的解决方案,不同在格式化我的数据:

s.Vx = 10; 
s.Vy = 2; 

Map1 = 'sqrt(s.Vx^2+ s.Vy^2)'; 
FunctionMap1 = str2func([@(s) Map1]); 

然后,我可以评价我的功能手柄只需用:

Value = FunctionMap1(s)