罗兰关于MATLAB的艺术

将想法转化为MATLAB

成交还是不成交

这篇文章延续了我上一篇文章的主题,人们经常就某个话题来找我。今天我想区分一下
在索引赋值(可以利用标量展开)和对多个输出数组赋值之间
由单元格或结构数组的逗号分隔列表产生。

内容

首先探索单元格数组

让我们首先探讨创建和填充单元格数组内容的一些方面。我首先初始化两个数组,每个数组
长度3。

A = {1 magic(3)“你好”};d = {“嗨”17个π};

接下来,我初始化另一个单元格数组,使其与一个

c =;

现在我尝试改变所有单元格的内容c通过分配一个新值,我想显示在每个单元格。

试一试[c {}): =“阿罗哈”%错误,除非c是标量cellE disp (cellE.message)结束
输出参数太多。

如你所见,这行不通。原因是左边有3个实体,因为c是一个长度为3的单元格数组,我使用了逗号分隔的列表概念。MATLAB不知道如何制作3个独立的数组
通过简单的赋值。

我可以使用常规索引c然而,它是用来居住的。在本例中,右边长度为1(包含字符串内容的单元格数组),左边长度为1
边是全部c.MATLAB可以对数组中的常规赋值进行标量展开,这就是为什么这样做。

c (,) = {“ahola”
C = '阿霍拉' '阿霍拉'

不然我们怎么填充所有的细胞呢c?一种方法是使用函数交易.我更喜欢上面这一行;我认为代码没有交易更清晰,而且没有额外的函数调用开销。

[c{}): =交易(“ola”
C = 'ola' 'ola' 'ola'

如果我有想要存储在内容中的值c在另一个单元格数组中d,我可以再用交易但我不需要。比较以下两种说法。

[c{:}] = d{:}
C = 'hi' [17] [3.1416]

在第一个示例中,我将右边的单元格数组展开为一个逗号分隔的列表,并将它传递给函数交易然后把输出分配给哪个c.在第二个语句中,我绕过了对的函数调用交易使用一些相对较新的(MATLAB 7)语法。

现在探索结构

现在让我们用struct做一个类似的练习。

s =结构(“f”,);顺丰速递
Ans = 1 Ans = 8 1 6 3 5 7 4 9 2
试一试[s。f) =“你好”%错误,除非s是标量structE disp (structE.message)结束
输出参数太多。
[s。f] =交易(“hej”);顺丰速递
Ans = hej Ans = hej Ans = hej
[s。f] = d {:};顺丰速递
Ans = hi Ans = 17 Ans = 3.1416

如你所见,我可以绕过这个函数交易当以类似于单元格数组赋值的方式给结构数组赋值时。

参考文献

这里有一些主要的参考资料,以获得更多关于今天的话题的细节。

你为什么使用交易?

我想听听你是怎么使用的交易是你唯一的选择还是你更喜欢它(可能是可读性?)而不是否定交易语法。请让我知道在这里

MATLAB®7.5发布

|

评论

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