MATLAB-我可以让我的句柄对象表现得像图形句柄吗



使用图形句柄,您可以执行以下操作:

>> a = nan(1,5)
a =
   NaN   NaN   NaN   NaN   NaN
>> a(3) = line([1 2],[1 2])
a =
       NaN       NaN    0.0042       NaN       NaN
>> find(~isnan(a),1,'first')
ans =
     3

如果这是用一个普通句柄派生类完成的,则会发生以下错误:

>> a(3) = MyObject(1,1,1)
The following error occurred converting from MyObject to double:
Error using double
Conversion to double from MyObject is not possible.

据我所知,图形手柄只是替身。自定义对象也可以这样操作吗?

示例:

MyObject.m

classdef MyObject < handle
    properties
        x
    end
    methods
        function obj = MyObject(x)
            if nargin < 1, x = NaN; end
            obj.x = x;
        end
    end
end

MATLAB

>> a = MyObject.empty(0,3)
a = 
  0x3 MyObject array with properties:
    x
>> a(3) = MyObject(10)
a = 
  1x3 MyObject array with properties:
    x
>> a(3)
ans = 
  MyObject with properties:
    x: 10
>> a(1)
ans = 
  MyObject with properties:
    x: NaN

请注意,对象a(1:2)是通过调用不带参数的默认构造函数来构造的。

另一种方式:

>> a = cell(1,3)
a = 
    []    []    []
>> a{3} = MyObject(10)
a = 
    []    []    [1x1 MyObject]

注意:句柄图形(HG)不是使用有文档的MCOS类系统实现的,而是使用较旧的、完全没有文档的UDD类。

最新更新