matlab中的元胞数组如何实现批量的赋值呢?

matlab中的元胞数组如何实现批量的赋值呢?,第1张

元胞数组是MATLAB的一种特殊数据类型,可以将元胞数组看做一种无所不包的通用矩阵,或者叫做广义矩阵。组成元胞数组的元素可以是任何一罩碧种数据类型的

常数或者常量,每一个元素也可以具有不同的尺寸和内存占用空间,每一个元素的内容也可以完全不同,所以元胞数组的元素叫做元胞(cell)。和一般的数值

矩阵一样,元胞数组的内存空间也是动态分配的。

(1)元胞数组的创建

>>

a={'matlab',20ones(2,3),1:10}

a

=

'matlab'

[

20]

[2x3

double]

[1x10

double]

>>

b=[{'matlab'},{20}{ones(2,3)},{1:10}]

b

=

'matlab'

[

20]

[2x3

double]

[1x10

double]

>>

c={10}

c

=

[10]

>>

c(1,2)={2}

c

=

[10]

[2]

>>

c(2,2)={5}

c

=

[10]

[2]

[]

[5]

>>

isequal(a,b)

ans

=

1

>>

whos

Name

Size

Bytes

Class

Attributes

a

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)

d(:,:,1)

=

[]

[]

[]

[]

d(:,:,2)

=

[]

[]

[]

[]

>>

whos

Name

Size

Bytes

Class

Attributes

a

1x1

4

cell

ans

1x1

1

logical

b

1x2

8

cell

c

3x3

36

cell

d

2x2x2

32

cell

(2)元胞数组的数据获得

从元胞数组中读取数据,可保存为一个标准的数组或一个新的单元数组,或取出数组进行计算。元胞数组中数据的访问,可通过元胞内容的下标进行,用元胞数组名加大括号{}。大括号中数值表示元胞的下标。如a{1,2}表示元胞数组中第一行第二列的元物昌举胞。

>>

a={20,'matlab'ones(2,3),1:3}

a

=

[

20]

'matlab'

[2x3

double]

[1x3

double]

>>

str=a(1,2)

str

=

'matlab'

>>

class(str)

ans

=

cell

>>

str=a{1,2}

str

=

matlab

>>

class(str)

ans

=

char

()和{}有着本质的区别,大括号用于表示元胞的内容,小括号表示指定的元胞。

a

=

[

20]

'matlab'

[2x3

double]

[1x3

double]

>>

a{2,1}(2,2)

ans

=

0.9134

>>

a{2,1}(2,3)

ans

=

0.0975

>>

a{1,2}(2)

ans

=

a

使用元胞的下标,可将一个元胞数组的子集赋值给另一个变量,创建新的元胞数组。

>>

a=[{1},{2},{3}{4},{5},{6}{7},{8},{9}]

a

=

[1]

[2]

[3]

[4]

[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:3}

a

=

[

20]

'matlab'

[2x3

double]

[1x3

double]

>>

a(1,:)=[]

a

=

[2x3

double]

[1x3

double]

>>

a={20,'matlab'ones(2,3),1:3}

>>

a{1}=[]

a

=

[]

'matlab'

[2x3

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

=

[]

[]

[]

[]

[]

[]

[]

[]

[]

[]

[]

[]

[]

[]

[]

[]

>>

size(b)

ans

=

2

8

(5)元胞数组中的 *** 作函数

cell:创建空的元胞数组

cellfun:为元胞数组的每个元胞执行指定的函数

celldisp:显示所有元胞的内容

cellplot:利用图形方式显示元胞数组

cell2mat:将元胞数组转变成为普通的矩阵

mat2cell:将数值矩阵转变成为元胞数组

num2cell:将数值数组转变成为元胞数组

deal:将输入参数赋值给输出

cell2struct:将元胞数组转变成为结构

struct2cell:将结构转变为元胞数组

iscell:判断输入是否为元胞数组

用xlsread函数,比如A=xlsread('d:/filename.xls','sheet1'),那么表格中的数据就存到键兄A矩阵中了。然后B=cell(3,5)%创建一个稿码袭3*5的元胞数组,B{1,1}=A(1:2,:)%将A数组中的前两行数据存入元胞数组B的第1行1列的位置。同理,B{1,2}=A(3:4,:)%将A数组中的前3-4行数据存入元胞数组B的第1行2列的位置。模汪

1 、 mcc4.0 编译环境设置

在桌面上右键单击“我的电脑”图标出现以下菜单

单击“属性”菜单项,出现“系统特性”对话框,单击“高级”选项卡,如下图所示

在上图中,单击“环境变量”按钮,出现“环境变量桐腔”对话框, 添加系统变量 matlab 值为 C:\MATLAB7 即 matlab7.0 的安装路径,如下图所示

在环境变量 path 中加入 C:\MATLAB7\bin\win32 ,如下图所示

按“确定”完成设置后, 重启计算机或注销当前用户卜轮腔 ,即可应用新设置。

2 、 Matlab7.0 编译器设置

(1) mex 命令设置

(a) 运行 Matlab ,在 Matlab 的命令窗口 (Command Window) 键入“型衫 mex -setup ”命令后,按回车键,安装 Matlab 编译器;

(b) 命令窗口出现如下提示:

Please choose your compiler for building external interface (M


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11972432.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-20
下一篇 2023-05-20

发表评论

登录后才能评论

评论列表(0条)

保存