Ошибка при использовании команды загрузки для открытия файла .mat в Matlab

Вот часть моего кода, где я ввожу имя файла .mat, который находится в той же папке, что и мой код. Однако он не идентифицирует имя файла и выдает ошибку:

"??? Ошибка при использовании ==> load

Невозможно прочитать файл «q.mat»: нет такого файла или каталога».

q_type=input('Do you want to use q from "A", "B" or from a saved .mat file? Enter the exact name: ','s');
q_type=mat2str([q_type'.mat'])
load(q_type)

Однако, если я использую команду загрузки в командном окне непосредственно, как показано ниже, она не выдает ошибки и загружает файл:

load('q_A.mat')

Почему это происходит так?


person Community    schedule 24.10.2010    source источник
comment
удалить вызов функции MAT2STR   -  person Amro    schedule 24.10.2010
comment
вы используете имя файла без его пути, если его нет в пути MATLAB, то MATLAB не может его найти. Используйте функцию fullfile().   -  person Mikhail    schedule 24.10.2010
comment
@Harpreet: вместо двух последних строк используйте: load( [q_MethodType '.mat'] ). Также я разместил более элегантное решение ниже...   -  person Amro    schedule 24.10.2010
comment
Я до сих пор не понимаю, зачем использовать mat2str()? Для символов он должен вести себя как функция тождества x=f(x). Вам также не нужны кавычки в имени файла, когда он используется программно. Строки отображаются с кавычками, но не имеют их в качестве дополнительных элементов строкового массива. Ошибка, которую вы получаете без mat2str, действительно странная.   -  person Mikhail    schedule 24.10.2010


Ответы (1)


Вот более удобное решение с использованием модального диалога:

[fileName pathName] = uigetfile({'*.mat' 'MAT-files (*.mat)'}, 'Load Data', '.');
if pathName == 0, error('No file selected'), end
load( fullfile(pathName,fileName) )

не стесняйтесь настраивать его по мере необходимости.

person Amro    schedule 24.10.2010