Как получить доступ к файлам в пути к классам в MATLAB? - PullRequest
1 голос
/ 07 марта 2012

Я хотел бы реализовать класс, который возвращает данные, расположенные в предварительно рассчитанном файле данных, например,

classdef myConstants
  properties ( Constant )
    const1 = load('consts.mat', 'const1');
  end
end

Однако я хочу, чтобы файл consts.mat находился в папке @myConstants, котораянаходится в пути MATLAB, поэтому я не могу (и не должен) жестко кодировать местоположение.

Так, как я могу указать load использовать файл @myConstants\consts.mat независимо от @myConstants фактического местоположения?

edit Я понял, что если папка @myConstants находится в пути MATLAB, load consts.mat работает глобально.Итак, код, который я написал, уже отлично работает, , но consts.mat не только глобально доступен, но также следует обратить внимание на конфликты имен, если другие классы предоставляют свои consts.mat - вот почему яне публикуйте это как ответ, я все же предпочел бы решение, которое не несет этот потенциальный источник ошибок.

Ответы [ 2 ]

2 голосов
/ 07 марта 2012

Поместите consts.mat в каталог @myConstants\private. Вы также можете сделать это:

const1 = getfield( load( 'consts.mat', 'const1' ), 'const1' );

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

1 голос
/ 07 марта 2012
const1 = load([fileparts(mfilename('fullpath')) filesep 'consts.mat'], 'const1');

делает трюк, но не скрывает consts.mat

...