Matlab - использование переменных рабочей области - PullRequest
5 голосов
/ 27 июля 2011

Я хочу создать функцию function ExtremePoints = AnalyseData( ScanData ).

Я хочу иметь возможность запускать функцию без передачи аргумента ScanData, и в этой ситуации я хочу использовать переменную с тем же именем из Matlab Workspace.

Возможно ли использовать внутри тела функции переменную ScanData, которая появляется в рабочей области?

Или я должен сначала сохранить содержимое переменной ScanData из рабочей области в файл .mat, а затем загрузить этот файл в тело функции?

1 Ответ

11 голосов
/ 27 июля 2011

Возможно, возможно, не совсем рекомендуется.Вот как:

function ExtremePoints = AnalyseData( ScanData )
if nargin == 0
    ScanData = evalin( 'base', 'ScanData' );
end
% do stuff

Это извлекает значение ScanData из рабочего пространства base, если не заданы входные аргументы (nargin == 0).

Использование eval и evalin, как правило, не рекомендуется, поскольку это затрудняет понимание и повторное использование кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...