Вам может потребоваться заполнить матрицу значениями по умолчанию для ее создания.Типичный подход к предварительному выделению матрицы объектов размером N
заключается в простом назначении объекта последнему элементу в матрице.
M(N,N)=imline(gca,[NaN NaN],[NaN NaN]); %# set non-displayable vals for x and y
ПРИМЕЧАНИЕ. Строка выше не будет работать сimline
, так как он вызовет конструктор по умолчанию для каждого из остальных N * N-1 встроенных объектов в матрице, а вызов imline
без аргументов вынуждает пользователя взаимодействовать с текущей осью.
Мой совет (если вы предварительно выделяете) - определить все строки по умолчанию явно в матрице:
for k=1:N*N
M(k)=imline(gca,[NaN NaN],[NaN NaN]);
end
%# Reshape (if necessary)
M = reshape(M,[N N]);
В качестве альтернативы, вы можете позволить Matlab заполнитьмассив для вас.Если вы обнаружите, что этот код вам часто понадобится, выведите новый класс из imline
.В следующем примере показано наименьшее, что могло бы произойти.Это просто определяет конструктор.Этот пример позволяет вам передавать необязательные аргументы imline
.Если аргументы не указаны, объект imline
создается со значениями позиции, как указано выше.
classdef myimline<imline
methods
function obj = myimline(varargin)
if isempty(varargin)
varargin = {gca,[NaN NaN],[NaN NaN]};
end
obj = obj@imline(varargin{:});
end
end
end
Пример использования:
%# Generate a 100 element array of `imline` objects,
%# but define the last one explicitly
mat(100)=myimline(gca,[0 1],[0 1]);
Последний myimline
объект в массиве имеет точки, указанные в назначении, но остальные элементы имеют значения положения по умолчанию [NaN NaN]
как указано выше.