したがって、MATLABにはforループがあり、ベクトルxは、cos(x)。^ 2などの1つの関数、またはsin(x)。^ 2+9などの別の関数を通過します。*バツ。ユーザーは、forループの前にこれらの関数のどれを使用するかを選択します。
私の質問は、ユーザーが反復ごとに何を選択したかをループでチェックしたくないということです。すべての反復で自動的に使用される関数(ユーザー定義など)へのポインターを使用する方法はありますか?
ちなみに、これは関数ではなく、スクリプト内にあります。
ありがとう
したがって、MATLABにはforループがあり、ベクトルxは、cos(x)。^ 2などの1つの関数、またはsin(x)。^ 2+9などの別の関数を通過します。*バツ。ユーザーは、forループの前にこれらの関数のどれを使用するかを選択します。
私の質問は、ユーザーが反復ごとに何を選択したかをループでチェックしたくないということです。すべての反復で自動的に使用される関数(ユーザー定義など)へのポインターを使用する方法はありますか?
ちなみに、これは関数ではなく、スクリプト内にあります。
ありがとう
function_handlesを使用できます。あなたの例では(ループを使用して利用可能なすべての関数で実行するため):
x = 1:10; % list of input values
functionList = {@(x) cos(x).^2, @(x) sin(x).^2 + 9*x}; % function handle cell-array
for i=1:length(functionList)
functionOut{i} = functionList{i}(x); % output of each function to x
end
次のようなことを試すことができます。
userChoice = 2;
switch userChoice
case 1
myFun = @(x) sin(x).^2 + 9.*x;
case 2
myFun = @(x) cos(x).^2;
end
for k = 1:10
x(k,:) = myFun(rand(1,10));
end