2013-12-12 115 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)