MATLAB元胞数组创建与访问.docx

上传人:博****1 文档编号:564043789 上传时间:2023-04-14 格式:DOCX 页数:6 大小:16.73KB
返回 下载 相关 举报
MATLAB元胞数组创建与访问.docx_第1页
第1页 / 共6页
MATLAB元胞数组创建与访问.docx_第2页
第2页 / 共6页
MATLAB元胞数组创建与访问.docx_第3页
第3页 / 共6页
MATLAB元胞数组创建与访问.docx_第4页
第4页 / 共6页
MATLAB元胞数组创建与访问.docx_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《MATLAB元胞数组创建与访问.docx》由会员分享,可在线阅读,更多相关《MATLAB元胞数组创建与访问.docx(6页珍藏版)》请在金锄头文库上搜索。

1、 元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一种数据类型的常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值矩阵一样,元胞数组的内存空间也是动态分配的。 (1)元胞数组的创建 a=matlab,20;ones(2,3),1:10a = matlab 20 2x3 double 1x10 double b=matlab,20;ones(2,3),1:10b = matlab 20 2x3 double 1x10 do

2、uble c=10c = 10 c(1,2)=2c = 10 2 c(2,2)=5c = 10 2 5 isequal(a,b)ans = 1 whosName Size Bytes Class Attributesa 2x2 388 cell ans 1x1 1 logical b 2x2 388 cell c 2x2 208 cell 用cell函数创建元胞数组,创建的数组为空元胞。cell函数创建空元胞数组的主要目的是为数组预先分配连续的存储空间,节约内存占用,提高执行效率。 a=cell(1)a = b=cell(1,2)b = c=cell(3,3)c = d=cell(2,2,2)

3、d(:,:,1) = d(:,:,2) = whosName Size Bytes Class Attributesa 1x1 4 cell ans 1x1 1 logical b 1x2 8 cell c 3x3 36 cell d 2x2x2 32 cell (2)元胞数组的数据获得 从元胞数组中读取数据,可保存为一个标准的数组或一个新的单元数组,或取出数组进行计算。元胞数组中数据的访问,可通过元胞内容的下标进行,用元胞数组名加大括号。大括号中数值表示元胞的下标。如a1,2表示元胞数组中第一行第二列的元胞。 a=20,matlab;ones(2,3),1:3a = 20 matlab 2x

4、3 double 1x3 double str=a(1,2)str = matlab class(str)ans =cell str=a1,2str =matlab class(str)ans =char()和有着本质的区别,大括号用于表示元胞的内容,小括号表示指定的元胞。a = 20 matlab 2x3 double 1x3 double a2,1(2,2)ans = 0.9134 a2,1(2,3)ans = 0.0975 a1,2(2)ans =a使用元胞的下标,可将一个元胞数组的子集赋值给另一个变量,创建新的元胞数组。 a=1,2,3;4,5,6;7,8,9a = 1 2 3 4 5

5、 6 7 8 9 b=a(2:3,2:3)b = 5 6 8 9 c=a(1:3,2:3)c = 2 3 5 6 8 9 本例使用元胞下标的方式创建了新的元胞数组b和c,通过结果看出b和c就是元胞数组a的一部分。 (3)元胞数组的删除和重塑 要删除单元数组中的行或列,可以用冒号表示单元数组中的行或列,然后对其赋一个空矩阵即可。a=20,matlab;ones(2,3),1:3a = 20 matlab 2x3 double 1x3 double a(1,=a = 2x3 double 1x3 double a=20,matlab;ones(2,3),1:3; a1=a = matlab 2x3

6、 double 1x3 double a(1)=a = 2x3 double matlab 1x3 double a(2)=a = 2x3 double 1x3 double a(1,2)=? A null assignment can have only one non-colon index. a(1)=a = 1x3 double 元宝数组和其他数组一样,也可以通过reshape函数改变形状,改变后的元胞数组与原元胞数组的元素个数相同,不能通过改变形状来添加或删除元胞数组中的元素。 a=cell(4,4)a = size(a)ans = 4 4 b=reshape(a,2,8)b = s

7、ize(b)ans = 2 8 (5)元胞数组中的操作函数 cell:创建空的元胞数组 cellfun:为元胞数组的每个元胞执行指定的函数 celldisp:显示所有元胞的内容 cellplot:利用图形方式显示元胞数组 cell2mat:将元胞数组转变成为普通的矩阵 mat2cell:将数值矩阵转变成为元胞数组 num2cell:将数值数组转变成为元胞数组 deal:将输入参数赋值给输出 cell2struct:将元胞数组转变成为结构 struct2cell:将结构转变为元胞数组 iscell:判断输入是否为元胞数组 a=20,matlab,3-7i;ones(2,3),1:3,0a = 2

8、0 matlab 3.0000 - 7.0000i 2x3 double 1x3 double 0 b=cellfun(isreal,a)b = 1 1 0 1 1 1 c=cellfun(length,a)c = 1 6 1 3 3 1 d=cellfun(isclass,a,double)d = 1 0 1 1 1 1(函数的应用) cellfun函数的主要功能是对元胞数组的元素(元胞)分别指定不同的函数,不过,能够在cellfun函数中使用的函数ushuliang是有限的。 能在cellfun中使用的函数: isempty:若元胞元素为空,则返回逻辑真 islogical:若元胞元素为逻

9、辑类型,则返回逻辑真 isreal:若元胞元素为实数,则返回逻辑真 length:元胞元素的长度 ndims:元胞元素的维数 prodofsize:元胞元素包含的元素个数 (7)元胞数组的嵌套 元胞数组的元胞中包含其他的元胞数,称为嵌套元胞数组,没有嵌套结构的元胞则称为页元胞。使用嵌套的大括号或cell函数,或直接用赋值表达式,都可以创建嵌套单元数组,另外还可以访问嵌套元胞数组的子数组、元胞或元胞的元素。 a=cell(1,2)a = a(1,2)=cell(2,2)a = 2x2 cell a(1,1)=magic(3);a1,2(1,1)=1 2 3;4 5 6;7 8 9;a1,2(2,1)=2-i;4+7i;a1,2(2,2)=cell(1,2);a1,22,2(2)=5; cellplot(a) (8)元胞数组与数值数组间的转化 应用循环,可以将元胞数组转化为数值数组

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号