matlab cell矩阵怎么判断cell中是不是矩阵

matlab中cell单元数据的使用_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
matlab中cell单元数据的使用
上传于||暂无简介
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
你可能喜欢Matlab: 如何对矩阵分块并对各块进行运算
已有 4026 次阅读
|个人分类:|系统分类:|关键词:Matlab,矩阵分块
矩阵分块用mat2cell命令,其用法如下图所示(取自Matlab Help):例1:矩阵 A=[1 2 3 4;4 5 6 7;7 8 9 10;10 11 12 13], 将矩阵等分为4个2*2矩阵。&& A=[1 2 3 4;4 5 6 7;7 8 9 10;10 11 12 13]A = & & 1 & & 2 & & 3 & & 4 & & 4 & & 5 & & 6 & & 7 & & 7 & & 8 & & 9 & &10 & &10 & &11 & &12 & &13&& B=mat2cell(A,[2 2],[2 2])B =
& &[2x2 double] & &[2x2 double] & &[2x2 double] & &[2x2 double]对每个分块进行运算,利用cellfun函数。例2:求上述各个分块的平均值。&& C=cellfun(@mean,cellfun(@mean,B,'UniformOutput',false))C = & & 3 & & 5 & & 9 & &11注意最里面的mean是求各块列平均,需要再平均一次才得到每一分块的总平均。应为最里面的mean运算后得到的是cell矩阵,所以false掉‘UniformOutput’参数。外面的一个mean运算得到的是数组,就不需要这样做了(默认的是不false) & & & &例3:求上述各分块的总和。&& D=cellfun(@sum,cellfun(@sum,B,'UniformOutput',false))D = & &12 & &20 & &36 & &44这个例子展示了cell型矩阵的运算并不需要用新的函数,只是需要将对应的矩阵运算符与cellfun函数结合即可。 & & & & &
转载本文请联系原作者获取授权,同时请注明本文来自科学网博客,链接地址:
上一篇:下一篇:
当前推荐数:0
评论 ( 个评论)
扫一扫,分享此博文
作者的精选博文
作者的其他最新博文
热门博文导读
Powered by
Copyright &&MATLAB小技巧之二十八:MATLAB中cell数组的是是非非& - MATLAB的日志,人人网,MATLAB的公共主页
好久不发状态了,大家还在吗?还在学习MATLAB么?
&MATLAB小技巧之二十八:MATLAB中cell数组的是是非非&
更多知识请参加微信公共账号:
&由于工作需要,经常要处理大量的实验数据.基本都是由仪器导出来,随着社会发展的进步,人们获取数据的量在不断增长,很多人都是,现在已经是海量数据时代了...
从cell使用说起
在读取文件的时候,cell数组(各种翻译都有,元胞数组,单元数组...直接无视)是Matlab的宠儿,基本都会出现,长期使用发现频率比struct高了不少~无论是Import Data还是使用textscan之类来获取数据.从长期使用高级语言的角度来说,特别是习惯了面向对象之后i,更习惯使用struct数组,概念也很相似,奈何现实是...我们先看一下Matlab在help给出的定义:
A cell array is a collection of containers called cells in which you can store different types of data.
精华之处就是在可以存储不同类型的数据.可以是Matlab的类型或者自定义的类型.
cell数组的一些操作
创建:直接使用{}以及cell(...)形式,另外 下标法赋值也可以.注意后两种可以预配内存,内存是空间连续的~读取内容:{下标}和(下标)& 区别在于类型()是cell数组 ,{}是实际类型.结果显示是一致的
&& a={'啊',123,[3 5 6],[1 2;7 8],sym(1)}a = &&& '啊'&&& [123]&&& [1x3 double]&&& [2x2 double]&&& [1x1 sym]&& class(a{1})ans =char&& class(a(1))ans =cell&& C{5,3}{4,7}(:,4)解读: cell数组的一个元素为cell类型,包含一个普通矩阵类型x = C{5,3};&&&&& % x is a cell arrayy = x{4,7};&&&&& % y is also a cell arrayz = y(:,4)&&&&&& % z is a standard array
调整内容:添加和删除与普通矩阵方法一致相关函数:& celldisp:显示所有的内容cell:创建空的元胞数组& cellplot:利用图形方式显示内容& cell2mat:将数组转变成为普通的矩阵& mat2cell:将数值矩阵转变成为cell数组& num2cell:将数值数组转变成为cell数组& cell2struct:将数组转变成为结构& struct2cell:将结构转变为cell数组& iscell:判断输入是否为cell数组cellfun:为cell数组的每个cell执行指定的函数 fun可以是特殊函数或者句柄&days{1} = 'Sunday';&&& days{2} = 'Monday';days{3} = 'Tuesday';&& days{4} = 'Wednesday';days{5} = 'Thursday';& days{6} = 'Friday';days{7} = 'Saturday';&shortNames = cellfun(@(x)x(1:3), days, 'UniformOutput', false)shortNames = &&& 'Sun'&&& 'Mon'&&& 'Tue'&&& 'Wed'&&& 'Thu'&&& 'Fri'&&& 'Sat'&deal:将输入参数赋值给输出 [Y1, Y2, Y3, ...] = deal(X{:}) -&可以简化[a,b,c,d] = C{:}cell数组的类型转换看到上面的那些类型转换函数,也许你会笑了,感觉也没有什么特别的,但是使用过这个cell数组的朋友,估计大部分都会有转换失败的经历-_-很坑爹的...Cell Array and Struct Arrays = cell2struct(c, fields, dim) cell数组转换为struct数组,注意fields为char数组或者cell数组,而且size(c,dim) == length(fields)&& % If fields is a cell arraysize(c,dim) == size(fields,1)&& % If fields is a char array& 这个经常错误就是fields类型以及dim不对&& c = struct2cell(s)& struct数组转换为cell数组 这个基本没有什么错误的Matrix and Cell Arrayc = mat2cell(x, m, n) 转换为 m行n列cell数组 m = cell2mat(c) 必须是同一类型,而且限制不可包含cell数组或object类型,但是struct结构是可以的(同样这个struct不含 cell和object类型,否则依旧出错)Double and Cell ArrayC = num2cell(A, [dim1, dim2, ...]) 返回C的维数是n...
阅读(3389)|
你要好好学学这软件啊
有很大用啊
人人移动客户端下载发表评论:
TA的最新馆藏[转]&[转]&小木虫 --- 500万硕博科研人员喜爱的学术科研平台
&&查看话题
Matlab如何实现矩阵和cell相乘
有矩阵a:2*3维;
细胞b:1*3维,其中b(i)是2*3*2维;
细胞c:1*2维,其中c(i)是2*3*2维;
问如何向量化实现如下功能:
& && && && && &c{1}=a*b{1}+a*b{2}+a*b{3}
& && && && && &c{2}=a*b{1}+a*b{2}+a*b{3}
求matlab向量化代码,不要循环的代码。因为这里只是举个例子,实际维度要大得多。
研究生必备与500万研究生在线互动!
扫描下载送金币

我要回帖

更多关于 matlab cell转成矩阵 的文章

 

随机推荐