Matlab で n 個のシンボリック変数を定義したいと考えています。たとえば、ユーザーが入力するとn=3
、コンパイラはx1
、x2
、x3
をシンボリック変数として定義します ( の範囲n
は無制限です)。どうすればfor
ループでこれを行うことができますか?
2634 次
3 に答える
0
@DennisJaheruddin が示すようにベクトルを作成することは、実際には標準的な方法ですが、個別の変数が本当に必要な場合:
for i = 1:10
x = sprintf('x%d',i);
assignin('caller',x,sym(x));
end
または、これを 1 行で実行します。
arrayfun(@(n)assignin('caller',sprintf('x%d',n),sym(sprintf('x%d',n))),1:10)
于 2013-11-13T15:32:38.360 に答える
0
ループを使用する必要はありません。
N = input('How many variables? ');
strArray = [ repmat('x',N,1) dec2base(1:N,10) repmat(' ',N,1)]; % create strings
strArray = strvcat(regexprep(mat2cell(strArray, ...
ones(1,size(strArray,1)), size(strArray,2)),'x0+','x')).'; % remove heading 0's
str = ['syms ' strArray(:).']; % string to be avaluated
eval(str)
たとえば、「11」と入力すると、文字列
syms x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 x11
が構築および評価され、11 個のシンボリック変数が作成されます。
于 2013-11-13T12:58:23.240 に答える