您可能需要使用默认值行填充矩阵才能创建它.预分配大小为N的对象矩阵的典型方法是简单地将对象分配给矩阵中的最后一个元素.
M(N,N)=imline(gca,[NaN NaN],[NaN NaN]); %# set non-displayable vals for x and y
注意,上面的行不能用于imline,因为它将为矩阵中的每个其他N * N-1个imline对象调用默认构造函数,并且调用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
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].