Programming and Data Types | ![]() ![]() |
文字列の計算
文字列計算は、MATLAB言語に付加された強力な柔軟性のある機能です。これは、ユーザが設定した文字列を実行したり、実行可能な文字列を作成したりするような演算が可能になります。
eval
関数eval
は、MATLABの式、ステートメント、または、関数コールを含む文字列を計算します。最も簡単な型は、
eval('string')
です。たとえば、このコードは、n
次のHilbert行列を作成する式をeval
を使って実行するものです。
t = '1/(i+j-1)'; for i = 1:n for j = 1:n a(i,j) = eval(t); end end
つぎの例は、ステートメントをeval
を使って実行するものです。
eval('t = clock')
計算用の文字列の作成
eval
への入力を文字列を連結することにより作成します。このコードは、変数名P1
, P2
, ...P10
で設定された10個の変数を作成し、それらの各々に異なる値を設定する方法を示しています。
for i=1:10 eval(['P',int2str(i),'= i.^2']) end
feval
feval
は、MATLABの式と言うより、むしろ関数名を文字列に含ませ、それを実行することができる点がeval
と異なります。実行される関数は、関数ハンドルまたは関数名を含む文字列のいずれかによって最初の引数で指定されます。
ユーザは、feval
とinput
を使って、M-ファイルにより定義されるいくつかの仕事の中の1つを選択することができます。つぎの例では、関数はsin
, cos
, log
に対する関数ハンドルを使います。
fun = ['sin'; 'cos'; 'log']; k = input('Choose function number: '); x = input('Enter value: '); feval(fun(k,:),x)
![]() |
アドバンストなインデックス | コマンド/関数の双対性 | ![]() |