2017-03-16 64 views
0

考慮下面的代碼的符號向量工作:MATLAB潛艇方法不能在索引變量

A = sym('a', [1, 2]); 
b = sym('b'); 
ans = A.^2 + b; 
A = [1, 2]; 
b = 4; 
subs(ans) 

這產生輸出

ANS = [A1^2 + 4,A 2^2 + 4]

而我本來想它產生

ans = [5,8]

矢量要轉換爲數值還需要什麼?

回答

3

這裏的一個簡單的解決方案:

syms A b;  %Initializing symbolic variables 
expr = A^2 + b; %Your expression (element-wise square is taken by default for sym class) 

A = [1 2]; b=4; %Assigning the values 
subs(expr)   %Substituting symbolic variables with corresponding assigned values 

輸出根據需要:

ans = 
[ 5, 8] 

評論:

  1. 始終避免動態變量。在代碼中,你指定A[1, 2]但你的表達實際上並不在它A。它有a1a2(和b明顯)。
  2. 不要在保留的變量名稱或內置函數之後命名變量/函數。 ans用於最新回答表達式未分配給其他任何其他。 (這就是爲什麼我用expr代替ans