Нет закрытия соединения `matfile`? - PullRequest
0 голосов
/ 01 февраля 2019

Команда matfile открывает то, что похоже на постоянное соединение с файлом *.mat.В большинстве ситуаций кодирования, когда к файлу обращаются, необходимо закрыть указанный файл.Там нет упоминания об этом на странице, на которую ссылаются выше.Это кажется мне необычным, но могу ли я предположить, что закрытие не нужно?

1 Ответ

0 голосов
/ 02 февраля 2019

Возвращаемый объект относится к классу matlab.io.MatFile , который является классом дескриптора.

В MATLAB классы дескрипторов являются типом класса, который работает не так, как обычные матрицы.,Они не копируются, они всегда передаются по ссылке.Создание копии просто делает новую ссылку на объект.Этот тип объекта используется в основном для собственных ресурсов.Ресурсы автоматически освобождаются, когда очищается последняя из ссылок на объект.

Таким образом, чтобы закрыть соединение, вы можете просто удалить переменную, содержащую ссылку:

m = matfile(filename);
% ... read/write from file
clear m

... но учтите, что вам не нужно делать это явно, потому что локальные переменные автоматически очищаются в конце области (т. е. когда функция возвращается).

Для получения дополнительной информации о классах дескрипторов см. эта страница документов .

...