Matlab не может найти функции-члены при изменении каталога.Что я могу сделать? - PullRequest
0 голосов
/ 07 февраля 2012

У меня есть программа Matlab, которая делает что-то вроде этого

cd media;
for i =1:files
            d(i).r = %some matlab file read command
            d(i).process();
end
cd ..;

Когда я перехожу в свой «media» каталог, я все равно могу получить доступ к свойствам члена (например, «r»), но Matlab не может найти функции, подобные process(). Как решается эта проблема? Есть ли какой-нибудь глобальный указатель на функцию, который я могу вызвать? Мое текущее решение состоит в том, чтобы сделать 2 цикла, но это несколько огорчает.

Ответы [ 2 ]

2 голосов
/ 07 февраля 2012

Джонас уже упоминал addpath, но я обычно использую его в сочетании с genpath:

addpath(genpath('path_to_folder'));

, который также добавляет все подкаталоги 'path_to_folder'.

2 голосов
/ 07 февраля 2012

Существует два решения:

  • не изменять каталоги - вместо этого укажите путь к файлу командой чтения вашего файла, например,

    d(i).r = load(['media' filesep 'yourfilename.mat']);
    

или

  • добавьте каталог, содержащий ваш process() к пути MATLAB :

    addpath('C:\YourObjectsFolder');
    

    Как указано TDC , вы можете использовать

    addpath(genpath('C:\YourObjectsFolder'));
    

    , если вы также хотите добавить все подкаталоги к своему пути.

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