簡體   English   中英

MATLAB-無法通過數組循環創建符號變量

[英]MATLAB - Can't create symbolic variables through array loop

我有這個細胞陣列

MatrixF = 

{3x1 cell}    {3x1 cell}

MatrixF{1}

ans = 

'f1'
'f2 '
'f3 '

MatrixF{2}

ans = 

'x1'
'x2 '
'x3 '

我想將MatrixF數組中的每個項目轉換為符號變量。 我以為這個循環會做到這一點

 [a, b] = size(MatrixF);
 for i=1:b;
     [c,d] = size(MatrixF{i});
     for j=1:c;
        sym(MatrixF{i}{j});
     end;
 end;

但是,相反,我得到的唯一輸出是變量ans,它是一個1x1數組。 為什么將ans聲明為sym而不是被調用和訪問的單個變量本身?

ans被聲明為sym因為sym函數需要顯式的輸出參數來生成符號變量。 此行為不同於使用命令形式的語義將變量虛假存在的syms函數

因此,您可以執行以下操作:

 [a, b] = size(MatrixF);
 for i=1:b
     [c,d] = size(MatrixF{i});
     for j=1:c
        MatrixF{i}{j} = sym(MatrixF{i}{j});
     end
 end

雖然,我建議做得更清潔(可能更快):

>> x = sym('x',[3,1])
x =
 x1
 x2
 x3

>> f = sym('f',[3,1])
f =
 f1
 f2
 f3

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM