罗兰谈MATLAB的艺术

将想法转化为MATLAB

对结构数组的向量化访问

虽然我写过这个话题之前,在使用结构数组时,我不断遇到问题。所以我想我今天只关注这一点。

内容

最近的示例问题

最近有一个关于新闻组关于如何向量化结构数组中元素的访问。我还收到了一个客户关于这个话题的邮件。以下是一位客户对他的问题的描述:

简而言之,我要做的(在尽可能少的代码行中)是:
state =一个结构数组,比如N个元素,每个元素都包含(例如)x和y元素。
在我的例子中,“状态”相当复杂,因此不需要使用简单的2 x N矩阵。
N状态(i)=markovmodel(状态(i-1));% 1。访问单个结构结束
绘制(state.x) % 2。作为vector访问一个元素的所有条目。

这个问题的答案

让我们先创建一个结构数组。

(1)。X = 3;(2)。X = 4;(3)。X = 5;(1)。Y = 42;(2)。Y = 99;(3)。Y = 0;州
States = 1x3带有字段的结构数组:x y

看看states。x里有什么

states.x
Ans = 3 Ans = 4 Ans = 5

使用结构体数组,可以收集x值使用

Allxvals = [states.x]
5 . Allxvals = 3 4

这是因为states.x生成一个逗号分隔的列表。我是怎么知道的?因为,如果我去掉分号,我会看到一堆输出ans =;换句话说,我得到了多个输出值。我如何收集多个值到一个数组?我可以用方括号或花括号。

使用方括号,[],只是将该列表放入括号之间,创建一个类型为double的数组。你也可以对结构数组做同样的事情,它的字段更适合使用花括号的单元格数组,{}代替方括号。

用户的解决方案

如果不使用

上面的Plot (state.x),用户将其替换为
情节([state.x])

信息被正确地绘制出来。

评论?

我的问题是为什么这个问题一直被问到。这个概念是否异常到人们甚至不知道如何在网上查找信息?在The MathWorks,我们能做些什么来让这一点更明显呢?请告诉我你的想法在这里




使用MATLAB®7.4发布

|
  • 打印
  • 发送电子邮件

评论

要发表评论,请点击此处登录到您的MathWorks帐户或创建一个新帐户。