(1) Нет, «естественным» образом отравить переменную невозможно.Однако вы можете сделать следующий обходной путь: Определить класс следующим образом:
classdef poison
properties (SetAccess=private)
varName
end
methods
function obj = poison(varName)
obj.varName = varName;
end
function delete(obj)
error('attempting to overwrite ''%s''',obj.varName)
end
end
end
Затем вы можете вызвать variable_name = poison('variable_name')
и получить тот же эффект - если variable_name
будет перезаписан, он вызовет метод удаления объектаи выдает ошибку, если при попытке индексации или при арифметических манипуляциях возникают общие ошибки.
(2) Вы можете явно установить родителя изображения (передать дескриптор оси, который вы можетенапример, получить по axHandle = axes('Parent',fig3);
) в вызове функции, что позволяет избежать вызова фигуры.Однако вы не можете сделать это и , чтобы установить масштабирование карты цветов.Таким образом, вы должны либо использовать
imshow(I1_avg_crop,[bg_value multiplier2*std_value+bg_value],'Parent',axHandle);
, либо, если у вас нет доступа к набору инструментов для обработки изображений, вам нужно использовать image
image(I1_avg_crop, 'CDataMapping','scaled','Parent',axHandle);
set(axHandle,'clim',[bg_value multiplier2*std_value+bg_value])
(3)Если вы вызываете getframe
с ручкой осей, она должна иметь возможность захватывать содержимое осей - если вы не переместили фигуру на второй экран, и в этом случае она не будет работать.Кстати, я заметил getframe
, что в прошлом у него были проблемы с OSX, например, с пристыкованными фигурами.
(4) Время от времени возникают определенные для OSX проблемы с Matlab, поскольку они все еще отлаживают некоторые из самых простых вещей (версия OSX раньше была версией Linux, работающей в X-Windows, и ониработаю над изменением этого в течение последних нескольких лет).