2014-11-06 543 views
1

matlab中的函數subs不能像我期望的那樣工作。我定義了一個符號變量,然後賦值爲0,但後來我發現它沒有被賦值。Matlab中的符號替換

syms x1 
a=x1 
subs(a,x1,0) 
a 

產生

x1 

,而不是0。任何想法?

+0

只是添加了一份說明,MATLAB不「指針樣式引用」工作。所以你的a仍然沒有修改。你需要獲得返回值,因爲@丹在他的答案中提到要得到你想要的結果。 – ha9u63ar 2014-11-06 14:53:23

回答

2

從我的MATLAB文檔:

潛艇(S,舊,新)返回S的新更換的舊都出現一個副本,然後評估秒。

subs不修改a,它返回它的修改版本。例如,試試這個:

syms x1; 
a = x1; 
b = subs(a,x1,0); 
a 
b 

返回

a = x1 
b = 0 
+0

如果我想爲x1指定一個初始值,那麼最好的策略是什麼?後來我仍然需要它作爲一個符號變量... – student1 2014-11-06 15:15:43

+1

@ student1這就是'subs'的工作方式。你可以有'a_sym = x1',並且只要你需要''a_sym'作爲一個符號變量,然後任何時候你想分配一個變量,你都可以做'a = subs(a_sym,x1,0) '。你仍然有象徵性的表達,以備日後需要時使用。 – Dan 2014-11-06 16:00:47