问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何将cell阵列中的资料个别做计算 matlab

发布网友 发布时间:2022-08-25 15:03

我来回答

2个回答

热心网友 时间:2024-11-24 08:43

  个别引用cell里面的元素,其实和引用一般的矩阵元素相似,只是不用小括号而用大括号
  a{1,2}这就可以引用a中1行二列的元素,如果元素本身是一个一般的数据矩阵,那么可以
  a{1,2}(1,2)引用cell矩阵a中1行2列的元素中(该元素是个一般数据矩阵)的1行2列的数
  按照这样的引用,不难对cell矩阵中每个单元中的数据去做相应的操作
  而对整个cell矩阵每个元素都操作的话,也不难用循环去实现

  对于整个cell矩阵每个元素都要进行相同操作的时候后
  可以用cellfun实现,效率要比用循环高
  例如,我们要求cell矩阵中每一个元素的长度(假设原来每一个元素都是矩阵),那么可以
  b=cellfun(@length,a);
  b就会返回一个形状和a一样的矩阵,由于length返回一个标量,所以b退化为一般的数据矩阵
  b中的每一个数,对应于a中相应位置矩阵的长度

  我们也可以自己设定函数,让cellfun将函数实施于cell矩阵的每一个元素
  例如你要求 每个cell的(对角元素和+1)/4,那么可以这样
  func=@(x) (sum(diag(x))+1)/4;
  b=cellfun(func,a);
  那么b就是a中每个矩阵的 (对角和+1)/4
  这里的func我用了匿名函数
  你也可以直接写一个函数m文件

  其实就是把你要对其中每一个数组的操作写成一个函数
  y=func(x) (利用输入数组x计算产生结果y的函数func)

  b=cellfun('func',a);
  其实等价于
  for i=1:size(a,1)
  for j=1:size(a,2)
  b(i,j)=func(a{i,j});
  end
  end
  只是用cellfun的书写效率和运行效率都比用循环的效率高

  注意,如果你的函数y=func(x) 返回的y不是一个标量值
  而是矩阵,字符串,cell数组等不单单占一个存储空间的数据时
  要设置cellfun的输出形式UniformOutput为0
  b=cellfun('func',a,'UniformOutput',0);
  这时候b也是一个cell矩阵了,每个元素是根据a中计算的结果
  例如a中的元素都是3x3的矩阵,现在要求其每个矩阵的逆矩阵
  b=cellfun(@inv,a,'UniformOutput',0);

热心网友 时间:2024-11-24 08:44

个别引用cell里面的元素,其实和引用一般的矩阵元素相似,只是不用小括号而用大括号
a{1,2}这就可以引用a中1行二列的元素,如果元素本身是一个一般的数据矩阵,那么可以
a{1,2}(1,2)引用cell矩阵a中1行2列的元素中(该元素是个一般数据矩阵)的1行2列的数
按照这样的引用,不难对cell矩阵中每个单元中的数据去做相应的操作
而对整个cell矩阵每个元素都操作的话,也不难用循环去实现

对于整个cell矩阵每个元素都要进行相同操作的时候后
可以用cellfun实现,效率要比用循环高
例如,我们要求cell矩阵中每一个元素的长度(假设原来每一个元素都是矩阵),那么可以
b=cellfun(@length,a);
b就会返回一个形状和a一样的矩阵,由于length返回一个标量,所以b退化为一般的数据矩阵
b中的每一个数,对应于a中相应位置矩阵的长度

我们也可以自己设定函数,让cellfun将函数实施于cell矩阵的每一个元素
例如你要求 每个cell的(对角元素和+1)/4,那么可以这样
func=@(x) (sum(diag(x))+1)/4;
b=cellfun(func,a);
那么b就是a中每个矩阵的 (对角和+1)/4
这里的func我用了匿名函数
你也可以直接写一个函数m文件

其实就是把你要对其中每一个数组的操作写成一个函数
y=func(x) (利用输入数组x计算产生结果y的函数func)

b=cellfun('func',a);
其实等价于
for i=1:size(a,1)
for j=1:size(a,2)
b(i,j)=func(a{i,j});
end
end
只是用cellfun的书写效率和运行效率都比用循环的效率高

注意,如果你的函数y=func(x) 返回的y不是一个标量值
而是矩阵,字符串,cell数组等不单单占一个存储空间的数据时
要设置cellfun的输出形式UniformOutput为0
b=cellfun('func',a,'UniformOutput',0);
这时候b也是一个cell矩阵了,每个元素是根据a中计算的结果
例如a中的元素都是3x3的矩阵,现在要求其每个矩阵的逆矩阵
b=cellfun(@inv,a,'UniformOutput',0);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
个人账户养老金预测公式:现有5万元,缴费20年,能领多少钱? 临沂比较有名的男装品牌 呼伦贝尔市悦动网络科技有限公司怎么样? 呼伦贝尔中汇实业有限公司怎么样? 呼伦贝尔油玉不绝电子商务有限公司怎么样? 如何避免wps卡顿? 属鼠的男人找对象是属什么,属鼠的人和什么属相合 96年鼠的姻缘在哪年 属相相合年份运势提升 2024属鼠找对象属什么最佳 黑客攻击网站能报案吗 请问如何批量获取matlab元胞数组非空元素中符合条件的内容? ins之前的消息加载失败 三棵树股票我今天申购了3000股能中3000股吗 三棵树股票还能持有吗 海王和渣男的最大区别 渣男和海王有什么区别 渣男和海王的实质区别是什么? c盘满了电脑黑屏怎么办? 手机号被注销了,等6个月后微信解绑了银行卡,问银行卡会被盗刷 交通事故认定书要多久可以出来 道路交通事故责任认定要多长时间 因为工作需要,要新买一台主要用于设备调试的笔记本,求大神推荐几款性价... 初中各科最好用的辅导书推荐 含金量高的参考书推荐 ...对excel的公式应用比较多,有没有大神帮忙推荐一下? 急球!!!matlab中用 while 循环计算 1 + x + x 2 + … + x n 的值... ...吗?中科电气 2021年3季度年报?中科电气股票今天可买不? 中科电气股票为什么跌?中科电气半年报2021?中科电气多少钱可以买入? ...涨?中科电气股票 半年报?可以买中科电气 的股票吗? 中科电气股票报表?中科电气雪球财经?中科电气股可以买吗? 中科电气股票为什么这么低?中科电气的第三季度报预计?中科电气今天可以... 皮肤粗糙怎样改善好? 古风优美朋友圈句子 坐飞机可以随身带酒上飞机吗? 星空意境的唯美文案句子 适合收藏五款酱香酒 市盈率高的股票能买吗?三种市盈率的计算方法 我的小说推荐8收藏5算好吗2天时间 市盈率高或者为负数的股票能不能买?散户怎么用市盈率选股? 我的收藏 银杏树什么时间种植移植合适 银杏树苗栽培的家加时期在几月 桃子的功效与作用点 周五卖出的股票周六能拿到钱吗 类似花开富贵的网名,类似于花开富贵的词语有那些? 老式算盘可以收藏吗 紫铜胎类景泰蓝老铜器物件收藏价值如何或值不值钱及市场估价如何_百度... 如果电脑没有集显会增加耗电吗? 电脑必须要有集成显卡吗 妈妈要从派出所调去禁毒会有危险吗? 去禁毒大队做尿检有沾毒品的风险吗?