罗兰关于MATLAB的艺术

将想法转化为MATLAB

对结构数组的向量化访问

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

内容

最近的样品问题

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

简而言之,我试图做的(在尽可能少的代码行)是:
state =一个结构体数组,假设有N个元素,每个元素都有(例如)组件x和y。
在我的例子中,“状态”是相当复杂的,因此不能保证使用一个简单的2 x N矩阵。
我= 2:N (i) = markovmodel状态(状态(张));% 1。访问单个结构体结束
情节(state.x) % 2。以vector的形式访问一个元素的所有项。

这个问题的答案

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

(1)。x = 3;(2)。x = 4;(3)。x = 5;(1)。y = 42;(2)。y = 99;(3)。y = 0;州
state = 1x3 struct array with fields: x y

我们来看看状态x

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

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

allxvals = [states.x]
4 .所有的时间= 3 4 5

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

使用方括号,[],只需将该列表放入括号中,创建一个类型为一种的数组,在本例中为双精度数组。你也可以用结构数组来做同样的事,它的字段更适合使用花括号的单元格数组,{}代替方括号。

用户的解决方案

如果而不是使用

在上面的Plot (state.x)中,用户用
情节([state.x])

信息得到了正确的绘制。

评论?

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




发布与MATLAB®7.4

|
  • 打印
  • 发送电子邮件

评论

要留下评论,请点击在这里登录到您的MathWorks帐户或创建一个新帐户。