1、matlab定义数组 一维数组(也叫向量) %原点坐标 xyz = [ 1, 0, 1]; %宽、厚widthHeigh = [ 0.1, 0.01]; %四条线的长度 sLenght = [ 0.25, 0.8, 0.3, 0.1 ]; 二维数组 face1Drill = [ 0.02 0.02 0.009...

1、matlab定义数组

一维数组(也叫向量)%原点坐标 xyz = [ 1, 0, 1]; %宽、厚widthHeigh = [ 0.1, 0.01]; %四条线的长度 sLenght = [ 0.25, 0.8, 0.3, 0.1 ];二维数组face1Drill = [ 0.02 0.02 0.009 0.01 2*0.009; 0.04 0.04 0.009 0.01 2*0.009; 0.06 0.08 0.009 0.01 2*0.009; 0.09 0.08 0.009 0.01 2*0.009; ];

2、在matlab中创建List集合

%设置一个NET的List集合 drillList = NET.createGeneric('System.Collections.Generic.List',{'System.Double[][]'}); %第二个参数为待Add进List的数据类型,必须定义

3、把二维数组加入List

%把二维数组放进List drillList.Add(face1Drill); drillList.Add(face2Drill); drillList.Add(face3Drill);
Q.E.D.
第一次接触cell数据是因为做一个数据处理时由于数据量太大excel的vlookup奔溃而数据库不熟练只能硬着头皮强行导入matlab匹配,其中有一列数据为年月日时分秒,还好matlab有cell数组,中间使用也遇到一些问题,现在...
第一次接触cell数据是因为做一个数据处理时由于数据量太大excel的vlookup奔溃而数据库不熟练只能硬着头皮强行导入matlab匹配,其中有一列数据为年月日时分秒,还好matlab有cell数组,中间使用也遇到一些问题,现在总结一下用法方便以后复习和可能会用到的朋友。
cell数组一般被叫做元胞数组,它的每个单元可以储存不同的数据类型,可以是数值,字符或矩阵或元胞数组等,类似于学过的c语言里的结构体
1.cell数组的创建
可以直接通过{}类似于矩阵的直接赋值:a={'winter',123,'coming','哈哈'};
也可以通过cell函数预分配内存,再赋值:a=cell(1,4);a={'winter',123,'coming','哈哈'};
2.cell数组的访问
与普通矩阵,数组的主要区别在于:通过()访问cell数组时访问到的是cell单元,通过{}访问cell数组时访问到的是cell单元储存的内容,举例如下图所示,其他操作基本一样。
3.cell数组相关的函数
cell:创建空的元胞数组,预分配内存
celldisp:显示元胞数组所有内容
cellplot:利用图形方式显示内容(因缺思厅!)
cell2mat:将元胞数组成普通矩阵(要求cell元胞数组的所有内容都必须为相同数据类型,可以为字符,会转化为字符矩阵)
mat2cell:将普通矩阵转化成元胞数组
iscell:判断输入是否为元胞数组
cellfun:为cell数组的每个cell单元的内容执行指定的函数,fun可以是特殊的函数或者句柄
A= cellfun(func,C)将函数func应用于元胞数组C的每个元胞的内容,每次应用于一个元胞。然后cellfun将func的输出串联成输出数组A,因此,对于C的第i个元素来说,A(i) = func(C{i})。输入参数func是一个函数的函数句柄,此函数接受一个输入参数并返回一个标量。func的输出可以是任何数据类型,只要该类型的对象可以串联即可。数组A和元胞数组C具有相同的大小。(官网解释)
默认情况下,cellfun将func的输出串联成数组。func必须返回标量。如果func返回对象,则对象所属的类必须满足以下要求。
支持通过对象数组的线性索引进行赋值
具有一个reshape方法,可返回与输入大小相同的数组
如果'UniformOutput'名称-值对组参数的值为false(0),则cellfun将以元胞数组形式返回输出。在这种情况下,func的输出可以具有任意大小和不同的数据类型。
b={[1,2,1];[2,1,1];[1,1,2]}; c=cellfun(@(x)(mat2str(x)),b,'un',0)
更一般的例子参见https://cn.mathworks.com/matlabcentral/answers/99632-how-do-i-save-a-cell-array-that-contains-both-strings-and-numbers-to-an-ascii-file-in-matlab
4.cell单元的删除
我们知道矩阵及矩阵的删除可以通过[]实现:
元胞数组操作类似但和其赋值一样有区别,区别就在于{}和()
a={1,2,3};
a{1}=[];%并不能删除第一个cell单元,只是变成空值
a(1)=[];%删除第一个单元
a(:)=[];%一次性删除所有cell单元