Matlab num2cell函数的用法

Matlab num2cell函数的用法

num2cell 指令可将一数值阵列转换成异质阵列, 其使用语法为:
C = num2cell(A, dim)
其中 dim 是代表 「被切割」的维度,若不指定,则将每个元素视为异质阵列里面的一个 1×1 矩阵


例一:将数值阵列转换成异质阵列(cont)
>> A = [1 2 3;4 5 6]    % 建立一个数值阵列 A
A =
     1     2     3
     4     5     6
>> C = num2cell(A)    % 将数值阵列 A 转成异质阵列 C
C =
    [1]    [2]    [3]
    [4]    [5]    [6]
>>

或建立文件num2cell.m
A = [1 2 3;4 5 6];    % 建立一个数值阵列 A
C = num2cell(A)    % 将数值阵列 A 转成异质阵列 C
运行
C =
[1] [2] [3]
[4] [5] [6]


可以将上例数值阵列 A 中的每一直行, 转成异质阵列 D 的元素
例二:
建立文件num2cell.m
A = [1 2 3;4 5 6];    % 建立的一个数值阵列 A
D = num2cell(A, 1)    % 1 代表「横列被切割」
D =
运行
[2x1 double] [2x1 double] [2x1 double


也可以将数值阵列 A 的每一横列,转成异质阵列 E 的元素
例三:
建立文件num2cell.m
A = [1 2 3;4 5 6];    % 建立的一个数值阵列 A
E = num2cell(A, 2)    % 2 代表「直行被切割」
运行
E =
[1x3 double]
[1x3 double]


struct2cell 指令可将一结构阵列的所有栏位值转换成异质阵列
例四:
建立文件struct2cell.m
student.name = 'Tim';
student.age = 8;    %student为一结构体
sCell = struct2cell(student)
运行
sCell =
'Tim'
[8]

另外有一个 cell2struct 指令,可以将异值阵列转换为结构阵列


将结构阵列的某一栏位值转换成异质阵列,使用 deal 指令
例五:
建立文件deal.m
S = struct('name',{'Tim','Annie'},'age', {8,5});
[sCell{1:length(S)}] = deal(S.name)
运行
sCell =
'Tim '
'Annie'

deal 指令的输入及输出引数需有相同个数,如上例中,sCell{1:length(S)} 的作用即是产生以逗点分开的输出变数列.
善用 deal 指令,可达成事半功倍之效, 以下欲列出 MATLAB 根目录下所有目录(不含档案)
例六:
建立文件deal.m
dirInfo = dir(matlabroot);    % 列出 MATLAB 的根目录的各种资讯
n = length(dirInfo);    % 档案及目录的个数
[fileAndDir{1:n}] = deal(dirInfo.name);    % fileAndDir 包含档案及目录名称
dirs = fileAndDir([dirInfo.isdir])    % dirs 包含各目录名称
运行
dirs =
Columns 1 through 10
'. ' '..' 'bin' 'demos' 'extern' 'help' 'ja' 'java' 'notebook' 'rtw'
Columns 11 through 17
'simulink' 'stateflow' 'sys' 'toolbox' 'uninstall' 'webserver' 'work'


相关指令汇整
cellplot(A):以图形的方式显示异质阵列 A 的内部资料型态
celldisp(A):显示异质阵列 A 各个构成元素的实际内容
reshape(A,m,n):改变异质阵列 A 的维度成 m×n
cell(m,n):预先配置一个维度为 m×n 的空矩阵
iscell(A):测试变数 A 是否为异质阵列。传回值 0,代表不是异质阵列;传回值 1,代表是异质阵列
num2cell(A, d):将数值阵列 A 转成异质阵列,d 表示被切割的维度
struct2cell(A):将结构阵列 A 的所有栏位名称值,转换成异质阵列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值