这是什么意思。matlab中的运算符是什么?

这是什么意思。matlab中的运算符是什么?,matlab,operators,dot-operator,Matlab,Operators,Dot Operator,我遇到了一些matlab代码,这些代码实现了以下功能: thing.x=linspace(... 我知道通常操作符会按元素进行下一个操作,但是它本身做什么呢?这只是一个子对象操作符,像C++中一样吗?< /p> < p>是的,它的子对象。 你可以有这样的东西 Roger.lastname=“贵宾犬”; Roger.SSID=111234997; 罗杰.儿童.男孩={“吉姆”,“约翰”}; 罗杰.儿童.女孩={“露西”} 点右边的东西叫做场 您还可以在Matlab中定义类,稳定这些类的对象,然后

我遇到了一些matlab代码,这些代码实现了以下功能:

thing.x=linspace(...
我知道通常
操作符会按元素进行下一个操作,但是它本身做什么呢?这只是一个子对象操作符,像C++中一样吗?< /p> < p>是的,它的子对象。 你可以有这样的东西 Roger.lastname=“贵宾犬”; Roger.SSID=111234997; 罗杰.儿童.男孩={“吉姆”,“约翰”}; 罗杰.儿童.女孩={“露西”}

点右边的东西叫做场

您还可以在Matlab中定义类,稳定这些类的对象,然后如果
thing
是这些对象之一,
thing.x
将是该对象中的实例变量

matlab文档非常优秀,可以在其中查找“字段”和“类”

还有其他用途,
M*N
意味着将两件事相乘,如果
M
N
都是矩阵,这将实现矩阵相乘的规则,以获得新的矩阵作为其结果。但是
M.*N
意味着,如果M,N是相同的形状,则将每个元素相乘。没有比这更微妙的了,但超出了你的要求

正如@marc指出的,dot还用于引用matlab称之为struct或structure的字段和子字段。在我看来,它们很像类、子类和枚举。想法是你可以有一个struct
data
say,并存储所有与数据相关的信息,如下所示:

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对象,在我看来,java对象与这些结构非常相似,只是有些字段可以引用函数。

是它的子对象

你可以有这样的东西 Roger.lastname=“贵宾犬”; Roger.SSID=111234997; 罗杰.儿童.男孩={“吉姆”,“约翰”}; 罗杰.儿童.女孩={“露西”}

点右边的东西叫做场

您还可以在Matlab中定义类,稳定这些类的对象,然后如果
thing
是这些对象之一,
thing.x
将是该对象中的实例变量

matlab文档非常优秀,可以在其中查找“字段”和“类”

还有其他用途,
M*N
意味着将两件事相乘,如果
M
N
都是矩阵,这将实现矩阵相乘的规则,以获得新的矩阵作为其结果。但是
M.*N
意味着,如果M,N是相同的形状,则将每个元素相乘。没有比这更微妙的了,但超出了你的要求

正如@marc指出的,dot还用于引用matlab称之为struct或structure的字段和子字段。在我看来,它们很像类、子类和枚举。想法是你可以有一个struct
data
say,并存储所有与数据相关的信息,如下所示:

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对象,在我看来,java对象与这些结构非常相似,只是有些字段可以引用函数。

根据mwengler的回答,从技术上讲,它是一种索引形式。但是,它也可以用于MATLAB最新版本中对象的方法调用,即

obj.methodCall;
但是请注意,这种方式存在一些低效之处——基本上,系统必须首先确定是否要将索引编入字段,如果不是,则调用该方法。这样做效率更高

methodCall(obj);

按照mwengler的回答,从技术上讲,这是一种索引形式。但是,它也可以用于MATLAB最新版本中对象的方法调用,即

obj.methodCall;
但是请注意,这种方式存在一些低效之处——基本上,系统必须首先确定是否要将索引编入字段,如果不是,则调用该方法。这样做效率更高

methodCall(obj);

我的印象是,
*
是元素级乘法运算符。
+.*
?+.*的不同之处在于,它只是APL中的一个运算符,而不是MATLAB中的一个运算符。@woodchips我在35年前学会了APL,但它仍然萦绕在我的梦中。我通过编辑修复了“打字错误”。它还用于访问结构成员。@Marc我在上面明确提到结构是为了庆祝获得升级投票。我的印象是,
*
是元素级乘法运算符。
+.*
?+.*的不同之处在于,它只是APL中的一个运算符,而不是MATLAB中的一个运算符。@woodchips我在35年前学会了APL,但它仍然萦绕在我的梦中。我用编辑修改了“打字错误”。它还用于访问结构成员。@Marc我在上面明确提到结构是为了庆祝获得了投票权。