我遇到了一些执行以下操作的matlab代码:
thing.x=linspace(...
我知道通常.
操作员会按元素进行下一个操作,但它自己做了什么?这只是一个子对象运算符,就像在 C++ 中一样?
我遇到了一些执行以下操作的matlab代码:
thing.x=linspace(...
我知道通常.
操作员会按元素进行下一个操作,但它自己做了什么?这只是一个子对象运算符,就像在 C++ 中一样?
是的,它的子对象。
你可以有像 Roger.lastname = "Poodle"; 这样的东西。罗杰.SSID = 111234997; Roger.children.boys = {“吉姆”,“约翰”};Roger.children.girls = {"露西"};
点右边的东西称为字段。
您还可以在 Matlab 中定义类,实例化这些类的对象,然后如果thing
是这些对象之一,thing.x
则将是该对象中的实例变量。
matlab 文档非常好,在其中查找“字段”和“类”。
, 还有其他用途.
,M*N
表示将两个事物相乘,如果M
,N
都是矩阵,这实现了矩阵乘法的规则,以得到一个新矩阵作为其结果。但是M.*N
意味着,如果 M、N 的形状相同,则将每个元素相乘。所以没有更多的微妙之处,但超出了你在这里问的范围。
正如@marc 指出的那样,点也用于引用matlab 称为结构或结构的东西的字段和子字段。在我看来,这些很像类、子类和枚举。这个想法是你可以有一个结构data
说,并存储所有与数据相关的信息,如下所示:
olddata = data; % we assume we have an old struct like the one we are creating, we keep a reference to it
data.date_created=date();
data.x_axis = [1 5 2 9];
data.notes = "This is just a trivial example for stackoverflow. I didn't check to see if it runs in matlab or not, my bad."
data.versions.current = "this one";
data.versions.previous = olddata;
关键是任何 matlab 对象/数据类型/无论您想调用什么,都可以由结构中的字段引用。最后一项表明我们甚至可以在结构的字段中引用另一个结构。最后一点的含义是我们可以查看以前版本的创建日期:
data.versions.previous.date_created
对我来说,这看起来就像 java 中的对象,除了我没有在其中放置任何方法。Matlab 确实支持 java 对象,这些对象在我看来很像这些结构,除了一些字段可以引用函数。
根据 mwengler 的回答,从技术上讲,它是一种索引形式。但是,它也可以用于最近版本的 MATLAB 中对象的方法调用,即
obj.methodCall;
但是请注意,这种风格存在一些低效率 - 基本上,系统必须首先确定您是否要对字段进行索引,如果不是,则调用该方法。这样做更有效率
methodCall(obj);