Matlab 中的类和 switch 语句

Posted

技术标签:

【中文标题】Matlab 中的类和 switch 语句【英文标题】:Classes in Matlab and switch statement 【发布时间】:2014-03-23 21:54:50 【问题描述】:

我在 Matlab 的语言中使用 OOP 概念,我有一个包含不同案例的类,如何使用 类和对象使它们高效 em>,以便在简单的Matlab代码中调用类的对象。如果调用类,则可以访问对象或简单变量。 如何减少只输入数字的情况和对象可以分配字符串?

我的代码:

classdef myClass
        properties
           Obj1; %..... other objects
            choice;
        end
        properties (Access=private)
        num   
    end
        methods
            function obj = myClass(num)
                obj.num = num;
            end
            function Choice(obj)
               switch choice
case 1
obj.Obj1 = 'Obj1';
case 2
obj.Obj1 = 'Obj1';
obj.Obj2 = 'Obj2';
case 3
obj.Obj1 = 'Obj1';
obj.Obj2 = 'Obj2';
obj.Obj3 = 'Obj3';
%similarly 100 cases
            end
        end
         methods (Static)
        function myStaticMethod
            disp(obj1); %.... other objects
return; %objects return
        end
    end
end

【问题讨论】:

【参考方案1】:

您可以使用对象数组,而不是为每个对象使用单独的属性。然后,您可以使用数组索引向该属性添加/删除对象:

properties
   Objects = []
end

您可以访问该属性并对其进行索引:

obj.Objects(k) = ...

并且可以使用for循环来显示:

for k = 1:length(obj.Objects)
   disp(obj.Objects(k))
end

【讨论】:

但我如何分配“obj.Obj1 = 'Obj1';”以便班级返回作业。 我建议不要使用obj.Obj1。如果obj.Objects 是一个数组,您始终可以使用obj.Objects[1:choice] 返回它的一个子集。您可能需要阅读更多有关 MATLAB 数组的信息。 在属性中,obj.Objects 使用 '.' 有语法错误 抱歉,我的意思是将Objects 定义为属性。我已经更新了答案。 无法从索引文件访问,报错 Undefined variable "obj" or class "obj.Objects"。

以上是关于Matlab 中的类和 switch 语句的主要内容,如果未能解决你的问题,请参考以下文章

Golang教程:switch 语句

flex关键字

由于 Python 没有 switch 语句,我应该使用啥? [复制]

c++中for循环和switch语句哪个更高效

matlab中出现case语句错误

在 Switch 语句/Matlab 中比较字符串