matlabにおける@の意味はなんでしょうか?

36 ビュー (過去 30 日間)
Takumi Enomoto
Takumi Enomoto 2022 年 7 月 7 日
回答済み: Hernia Baby 2022 年 7 月 8 日
reductionFcn = @(x)x;
上記の構文が例題にあったのですが、右辺の意味がわかりません。
matlabにおける@の意味は何でしょうか?

採用された回答

交感神経優位なあかべぇ
交感神経優位なあかべぇ 2022 年 7 月 7 日
編集済み: 交感神経優位なあかべぇ 2022 年 7 月 7 日
reductionFcn = @(x)x; の@は無名関数、関数ハンドルなどとよばれ、関数を変数などに格納したりすることができます。
変数に格納した関数ハンドルは、()づけで引数を定義することで定義した関数を呼び出すことができます。
下記のように、使用します。
a = @(x) disp(x);
a(1);
1
b = @() disp(2);
b();
2
  1 件のコメント
交感神経優位なあかべぇ
交感神経優位なあかべぇ 2022 年 7 月 7 日
ちなみに、下記コマンドを実行すると、ボタンがひとつあるGUIが生成されるのですが、このボタンを押したときに呼び出される関数を定義したりなどの使われ方をします。(下記の場合は、ボタンを押すとdisp(1)が呼び出されます。)
uibutton('ButtonPushedFcn', @(src, event) disp(1));

サインインしてコメントする。

その他の回答 (1 件)

Hernia Baby
Hernia Baby 2022 年 7 月 8 日
■reductionFcn = @(x) x;について
 無名関数、通称ラムダ(LAMBDA)関数における変数の宣言です。
 意味としましては、reductionFcn = @(使う変数) 関数 になります。
■何がうれしいか
 よく使用される数式の関数を作成し、使いまわせることが利点です。
f = @(x,y) x + y
f = function_handle with value:
@(x,y)x+y
f(1,2)
ans = 3
f((1:3),5)
ans = 1×3
6 7 8
■その他
 cellfunのようなものに対しても使用できます。
Fs = 100;
t = (0:1/Fs:3);
T = table2cell(table((1:3)')) % 1~3の変数をcell型にしています
T = 3×1 cell array
{[1]} {[2]} {[3]}
スイープパラメータの設定
C = cellfun(@(x) MyFcn(t,x),T,UniformOutput=false); % cell型のxのみ使用する
まとめて図示
figure
hold on
cellfun(@(x) plot(t,x),C,UniformOutput=false)
自作関数
function y = MyFcn(t,x)
tmp = x.^2;
y = tmp.*sin(2*pi.*x.*t);
end

カテゴリ

Help Center および File Exchange行列および配列 についてさらに検索

タグ

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!