![MATLAB R2020a从入门到精通(升级版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/74/38507074/b_38507074.jpg)
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
9.2 单元数组的处理
从某种程度上讲,单元数组的处理仅仅是不同类型数值数组的处理技术的自然扩展,只不过其包含的内容由单一类型扩展到多种类型。
用户可以利用方括号将多个单元数组组合在一起,形成一个维数更大的单元数组,就像在数值型数组中方括号被用来创建更大的数值型数组一样。例如,如下所示的代码将A和B依据列的方向组合在一起形成C:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt010_7.jpg?sign=1738999191-PPhLve2UDFrEh8YR1D9qi7iIDyp3QOwn-0-6f9d2fcd2460ed2cfb3441ebdb16b2e7)
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt010_8.jpg?sign=1738999191-d2JITpUJhPXwDQin4HIaHNmvFhg1l3kS-0-76d3e4402708c15c7a90fe549ac3d22e)
要获得一个单元数组中的子数组,利用传统的数组寻址技术的索引方法即可将一个单元数组的子集提取出来生成一个新的数组放到单元数组中。例如,如下所示的代码抽取C的第1行和第3行组成D:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt010_9.jpg?sign=1738999191-J2PfglkIP1NQCkEBFAuiMPYFgl3Z3kNp-0-2de395c3a412413a0a92721b02a0a324)
另外,将单元数组的某一部分设置为空数组。例如,如下所示的代码将C的第3行删除:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt010_10.jpg?sign=1738999191-5qk0sf3C82rxuiLQ0zIj1sMkYDlqx0A1-0-a54ee4c0381662fc0a64452cd60bee70)
MATLAB中还提供了其他函数用于处理单元数组。下面就一些重要的函数举例说明。
cellfun()函数将一个指定的函数应用到一个单元数组的所有单元上,这样就不用再针对每个单元调用函数。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt010_11.jpg?sign=1738999191-G82PUQlZVakF6wBQvNyBSIgAXmtWKLCQ-0-75e0b99650444b2c19332808883fdfd1)
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt010_12.jpg?sign=1738999191-D0cf4UZu1gP5V5APDGvTQ5Tu1aj9c6Q3-0-274d9b4e87cc28649e38061851067080)
在很多情况下,在单元数组中应用比较广泛的是num2cell()函数,该函数从一个任意类型的数组(可以是任意数据类型)中提取指定的元素,然后填充到一个单元数组中。
下面先创建一个随机数组a,然后利用num2cell()函数提取a中的相应元素创建单元数组c和d。具体示例如下:
![img](https://epubservercos.yuewen.com/FDADB4/20266983901431206/epubprivate/OEBPS/Images/txt010_13.jpg?sign=1738999191-fUWvsKhBTm3uQ1ute9zhEBALvNCTzvul-0-1f35bf8ebb17604bbe96d728c7a5086d)
注 意
虽然上面的a是数值数组,但是num2cell()函数支持各种类型的数组,如字符串数组、逻辑数组等。