Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MATLAB中对象属性的自定义显示_Matlab_Class - Fatal编程技术网

MATLAB中对象属性的自定义显示

MATLAB中对象属性的自定义显示,matlab,class,Matlab,Class,在MATLAB中,我想自定义一个对象,使其与数据类型相关的属性之一显示一个值(与类型代码对应的原始数值)及其字符串表示形式,如:“dobule”(14)。在下面的代码中,我谈论的属性称为datatype 目前,我已经重写了matlab.mixin.CustomDisplay类,并以某种方式对其进行了排序,但我必须使用一个字符串变量来合并数字和字符串,并形成一个组合输出。问题是MATLAB显示带有引号的字符串: tidx= 具有以下属性的idx: 尺寸:3 数据类型:'double(14)' 尺寸

在MATLAB中,我想自定义一个对象,使其与数据类型相关的属性之一显示一个值(与类型代码对应的原始数值)及其字符串表示形式,如:“dobule”(14)。在下面的代码中,我谈论的属性称为
datatype

目前,我已经重写了
matlab.mixin.CustomDisplay
类,并以某种方式对其进行了排序,但我必须使用一个字符串变量来合并数字和字符串,并形成一个组合输出。问题是MATLAB显示带有引号的字符串:

tidx=
具有以下属性的idx:
尺寸:3
数据类型:'double(14)'
尺寸:[3 4 5]
这很好,但我不喜欢。当MATLAB在这个特定属性上显示一个字符串时,有没有办法去掉引号

类别定义:

classdef idx
也许适合你的班级:

function str=disp(obj)
    p=properties(obj);
    for i=1:length(p),
        propval=get(obj,p);
        if isscalar(propval) % custom special format. 
        % Translation of original: sizestr = ...
                sprintf('%s (%d)', app.datatypenum2str(app.datatype), app.datatype);
            str{i}=sprintf('%s: %s (%d)',p{i}, datatypenum2str(propval), propval);
        else % standard display, mimicking getPropertyGroups@matlab.mixin.CustomDisplay
            str{i}=sprintf('%s: %s',p{i},disp(propval));
        end
    end
    str=sprintf('%s\n',str{:});

end

通过这种方式,您可以自定义属性在根/目录下的显示方式,而无需使用matlab.mixin.util.PropertyGroup包装器。

您的代码是解决此问题的另一种方法,我确实考虑过重载
disp
。我希望我可以离开MATLAB来格式化输出本身,并整理出要显示的内容,避免其他内容。您的代码似乎重新格式化了它所迭代的对象中的每个属性。我认为这很容易解决,只需要一个额外的
if
块,不是吗?我已经尝试将您想要的if块添加到我的提案中;-)查看isscalarThanks的if。我不确定我是否遵循,以防我写这篇文章!如果我错了,我道歉。我的意思是只对其中一个属性应用自定义格式。我不知道我遗漏了什么,但我认为当前状态下的函数会迭代所有属性,并对每个标量应用相同的格式模式,而不是仅对一个选定属性应用格式模式。无论如何,谢谢你的帮助。这是一个好的开始。我添加了一些评论。嗯