您需要通过匿名函数来做到这一点:
在脚本文件,例如名为test.m:
%Entry Point
clear all
N = 100;
x = randn(1,N);
figHandle = figure(1);
clf(figHandle);
set(figHandle, 'KeyPressFcn', ...
@(fig_obj , eventDat) myFunction(fig_obj, eventDat, x, N));
在一个文件在同一文件夹名为myFunction.m作为test.m
function myFunction(~, eventDat, x, N)
mean = sum(x)/N;
disp(mean);
key = eventDat.Key;
disp(key);
如何从myFunction返回值? 有这样做的few ways。这取决于你想做什么。但很快你可以使用可变的变量,例如containers.Map。这是这样的一个例子。返回的变量是newN。
在脚本文件,例如名为test.m:
%Entry Point
clear all
N = 100;
x = randn(1,N);
% this map will store everything u want to return from myFunction.
returnMap = containers.Map;
figHandle = figure(1);
clf(figHandle);
set(figHandle, 'KeyPressFcn', ...
@(fig_obj , eventDat) myFunction(fig_obj, eventDat, x, N, returnMap));
% wait till gui finishes in this example.
waitfor(figHandle);
newN = returnMap('newN');
% display newN
newN
在一个名为myFunction.m:
function myFunction(handle, eventDat, x, N, returnMap)
mean = sum(x)/N;
disp(mean);
key = eventDat.Key;
disp(key);
newN = 435;
returnMap('newN') = newN;