You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MATLAB中继承double类新增属性后,如何便捷访问数值及重新赋值?

关于MATLAB自定义double子类的数值获取与修改问题

一、快速获取纯数值

想要拿到不含额外属性的实际数值,直接用double()函数把自定义类实例转成标准double类型就行,示例:

x = myDouble(2, 'string');
pure_val = double(x); % pure_val 就是纯数值2

不管是单独取值还是后续要基于原数值重新赋值,这个方法都能用。

二、修改数值不必重新创建带原有属性的实例

你示例里直接写x = 3后,实例保留了原有string属性,这是MATLAB对double子类的隐式转换特性,但这种行为依赖构造函数的兼容性,不是所有场景都可靠。更稳妥的方式是在类里加一个专门的数值更新方法,既能修改数值又保留原有属性:

完善后的类定义

classdef myDouble < double
    properties
        string
    end

    methods 
        function obj = myDouble(val, s)
            % 兼容多种输入的构造函数
            switch nargin
                case 2
                    obj = obj@double(val); % 初始化底层double数值
                    obj.string = s;
                case 1
                    if isnumeric(val)
                        obj = obj@double(val);
                        obj.string = '';
                    elseif ischar(val)
                        obj = obj@double(0);
                        obj.string = val;
                    end
            end
        end

        function obj = updateValue(obj, new_val)
            % 自定义数值更新方法,保留string属性
            obj = obj@double(new_val);
        end
    end
end

使用示例

x = myDouble(2, 'string');
x = x.updateValue(3); % 此时x的数值变为3,string属性还是'string'

如果想让x = 3这种直接赋值也自动保留属性,可以重载subsasgn运算符,但实现起来稍复杂,上面的自定义方法更简单直观。

内容的提问来源于stack exchange,提问作者robbie crockett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 06:09:24