【问题标题】:Weird behaviour with colon operator on constant attribute in MATLAB classMATLAB类中常量属性的冒号运算符的奇怪行为
【发布时间】:2012-01-03 12:51:31
【问题描述】:

我有一个奇怪的问题我无法解决,并且在互联网上找不到任何解决方案:

classdef test
    properties(Constant)
        bla = {'Marker', 'o', 'MarkerEdgeColor', 'b', 'MarkerFaceColor', 'b'};
    end
end

在命令行中使用冒号运算符访问test.bla WORKS:test.bla{:}。但是当我在另一个类中使用它时它不会:

classdef foo
    properties
    end

    methods
        function this = foo()
            test.bla

            a = test.bla;
            a{:}

            test.bla{:}            
        end
    end    
end

一直用a = test.bla; a{:}很麻烦... 对此有何建议? 非常感谢!

【问题讨论】:

  • test.bla{:} 可能不是您打算做的。它实际上返回多个答案,您可以从命令行的输出中看到。您可以将代码发布在您实际使用a 的解决方法的地方吗?请注意,test.bla(:) 在这两个地方都有效。
  • 我真的很想这样做,因为我想使用plot(x, y, test.bla{:}) 扩展为单个参数!
  • 您也可以将bla 定义为结构,其中字段是属性名称,然后使用test.bla 调用绘图。

标签: class matlab constants colon


【解决方案1】:

确实不行!我真的很惊讶。

我发现你可以使用:

x = {test.bla(:)};

这将为您提供所有元素。

【讨论】:

  • 谢谢,但我需要将它用作单个函数参数,因此我必须使用x = {test.bla(:)}; my_function(x{:}),这与使用x = test.bla; my_function(x{:}) 一样痛苦(可能甚至更多:))。 .但是好吧,我没有在上面的帖子中发布关于我的函数调用的内容!不过谢谢!也许我发现了一个 matlab 错误,是的! ;D
  • 哦,是的,忘记点赞了。实际上,这并不是一个真正的解决方案,因为您刚刚确认了我发布的内容,但是尽管我会接受它,否则我将不再有 100% 的接受率 :):) 也许其他人最终会在这里提供帮助未来:)
猜你喜欢
  • 1970-01-01
  • 2019-12-06
  • 2021-02-07
  • 1970-01-01
  • 1970-01-01
  • 2013-10-09
  • 1970-01-01
  • 2017-04-10
  • 1970-01-01
相关资源
最近更新 更多