首页编程cellfun 求助,matlab中的cellfun函数的使用

cellfun 求助,matlab中的cellfun函数的使用

编程之家2023-11-03104次浏览

你是否想了解更多关于cellfun和求助,matlab中的cellfun函数的使用的知识?在本文中,小编将为您详细介绍这两个话题,帮助您更好地理解。

cellfun 求助,matlab中的cellfun函数的使用

matlab中cell数组用法

cell数组一般被叫做元胞数组,它的每个单元可以储存不同的数据类型,可以是数值,字符或矩阵或元胞数组等,类似于学过的c语言里的结构体

1.cell数组的创建

可以直接通过{}类似于矩阵的直接赋值:a={'winter',123,'coming','哈哈'};

cellfun 求助,matlab中的cellfun函数的使用

也可以通过cell函数预分配内存,再赋值:a=cell(1,4);a={'winter',123,'coming','哈哈'};

2.cell数组的访问

与普通矩阵,数组的主要区别在于:通过()访问cell数组时访问到的是cell单元,通过{}访问cell数组时访问到的是cell单元储存的内容,举例如下图所示,其他操作基本一样。

cellfun 求助,matlab中的cellfun函数的使用

3.cell数组相关的函数

cell:创建空的元胞数组,预分配内存

celldisp:显示元胞数组所有内容

cellplot:利用图形方式显示内容(因缺思厅!)

cell2mat:将元胞数组成普通矩阵(要求cell元胞数组的所有内容都必须为相同数据类型,可以为字符,会转化为字符矩阵)

mat2cell:将普通矩阵转化成元胞数组

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

cellfun:为cell数组的每个cell单元执行指定的函数,fun可以是特殊的函数或者句柄

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单元

如果p为一个数,那么h(1)=p,是没有问题的。

如果p为一个向量,那么h(1,:)=p是没有问题的。

如果p是一个矩阵的话,上面的两种赋值方法都是会有错误的。

那么要如何处理呢?

这时就用到了cell数据类型了。cell的每个单元都可以存储任何数据,比如传递函数等。当然,存储矩阵更是没有问题的了。但是用cell数据类型之前,要先初始化。

a=cell(n,m)

那么就把a初始化为一个n行m列的空cell类型数据。

如何赋值呢?

a{1,1}=rand(5)

那么a的1行1列的单元中存储的就是一个随机的5×5的方阵了。

那么要用第一个单元中的方阵中的某个值呢?

可以如下引用:a{1,1}(2,3)

就可以了,引用cell单元时要用{},再引用矩阵的某个数据就要用()了。

cell单元中的每个单元都是独立的,可以分别存储不同大小的矩阵或不同类型的数据。

MATLAB胞元数组函数cellfun输出错出

就是一致性输出的问题

如果函数返回的是一个标量,cellfun可以用一致输出,函数会把输出合并成一个矩阵

矩阵的维度大小和原来的cell数组的维度大小一致

如果函数返回不是标量,就不能用一致输出

你的函数返回的是3x1的矩阵,所以不能用一致输出,必须用非一致输出

B=cellfun(@(x)(A+E)*x,C,'UniformOutput',0)

求助,matlab中的cellfun函数的使用

就是一致性输出的问题如果函数返回的是一个标量,cellfun可以用一致输出,函数会把输出合并成一个矩阵矩阵的维度大小和原来的cell数组的维度大小一致如果函数返回不是标量,就不能用一致输出你的函数返回的是3x1的矩阵,所以不能用一致输出

matlab的cell语句

使用方法 c= cell(n)创建n*n个空矩阵的元胞数组。如果参数n不是标量,就会报错。 c= cell(m, n)或c= cell([m, n])创建m*n个空矩阵的元胞数组。参数m和n必须为标量。 c= cell(m, n, p,...)或c= cell([m n p...])创建m*n*p*...个空矩阵的元胞数组,参数m,n,p,...必须为标量。《Simulink与信号处理》 c= cell(size(A))创建一个元胞数组,它包含与矩阵A同维数的空矩阵。 c= cell(javaobj)把Java数组或Java对象javaobj转换成一个MATLBA元胞数组。由此产生的元胞数组的元素是MATLAB类型之一,它非常接近于Java数组元素或Java对象。应用举例:例一:下面例子将产生一个元胞数组,并对它进行赋值与输出 A= cell(2) A= [] [] [] [] A{1, 1}= zeros(5); A{1, 2}= ones(3); A{2, 1}='Hello, World'; A{2, 2}= [0 2 3]; A= [1x2 double] [3x3 double]'Hello, World' [1x3 double] for i=1:2 for j= 1:2 A{i, j} end end ans= 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ans= 1 1 1 1 1 1 1 1 1 ans= Hello, World ans= 0 2 3例二:下面一个例子将产生一个与矩阵A同维数的元胞数组,其元素都是空矩阵 A= ones(2,2) A= 1 1 1 1 c= cell(size(A)) c= [] [] [] []例三:下面一个例子将把一个java.lang.String对象数组转换成一个MATLAB元胞数组 strArray= java_array('java.lang.String', 3); strArray(1)= java.lang.String('one'); strArray(2)= java.lang.String('two'); strArray(3)= java.lang.String('three'); cellArray= cell(strArray) cellArray='one''two''three'

好了,关于cellfun和求助,matlab中的cellfun函数的使用的问题到这里结束啦,希望可以解决您的问题哈!

linux漏洞扫描?linux漏洞扫描工具有哪些linux扫描漏洞竞价推广怎么做(竞价推广如何做)