Изменить: переписал ответ, чтобы он соответствовал информации, добавленной OP.
Если handles.roi1 создается с imread:
handles.roi1 = imread('test.jpg');
или, сначала сохранив содержимое в переменной a, а затем сделав копию a в handles.roi1 (в этом случае у вас есть 2 копии одних и тех же данных):
a = imread('test.jpg');
handles.roi1 = a;
тогда нет дескрипторов открытых файлов. Кроме того, a и handles.roi1 равны, и они не являются дескрипторами файлов, но каждый из них содержит цветное или полутоновое изображение графического файла test.jpg (в данном примере) .
В MATLAB обычно вы получаете дескриптор файла с помощью fopen, но есть несколько команд файлового ввода-вывода, которые не используют дескрипторы файлов, например, imread, xlsread и fastaread не используют дескрипторы файлов.
В этом случае вы хотите (я полагаю) избавиться от поля roi1 структуры handles (handles.roi1 в синтаксисе MATLAB), поэтому вы можете использовать rmfield таким образом:
handles = rmfield(handles, 'roi1');
Который сохраняет новую копию handles без поля roi1 обратно в ту же структуру с именем handles.
Обратите внимание, что это не имеет ничего общего с дескрипторами файлов или дескрипторами графических объектов. Это просто структура с именем handles, имена которой вы или кто-то путаете с именем handles, несмотря на то, что imread вообще не возвращает ни дескрипторов файлов (ни дескрипторов графических объектов)! Я бы предпочел назвать его imageData вместо handles, потому что именно это он и содержит.
С другой стороны, если handles.roi1 действительно был дескриптором файла, созданным с помощью fopen, вот так:
handles.roi1 = fopen('test.jpg');
В этом случае у вас будет настоящий дескриптор открытого файла в MATLAB, и вы должны сначала закрыть файл с помощью fclose следующим образом:
fclose(handles.roi1);
Или, наоборот, если вы хотите закрыть все открытые файлы, открытые с помощью fopen:
fclose('all');
Затем, когда после fclose вы захотите избавиться от поля roi1 структуры handles (handles.roi1 в синтаксисе MATLAB), вы можете использовать rmfield таким образом (так же, как и в случае imread):
handles = rmfield(handles, 'roi1');
Что сохраняет новую копию handles без поля roi1 обратно в ту же структуру с именем handles.
person
nrz
schedule
26.12.2012
handles.roi1? - person Shai   schedule 26.12.2012delete? не могли бы вы ввестиwhich deleteв приглашении вашего Matlab и посмотреть, куда он указывает? - person Shai   schedule 26.12.2012