在matlab中求一个元胞数组中一个字符出现的次数?

 我来答
tianxiawulang
推荐于2016-06-26 · TA获得超过2.7万个赞
知道大有可为答主
回答量:4732
采纳率:89%
帮助的人:2635万
展开全部
  1. 首先,你的元胞数组除了包含字符串,还有没有其他类型的数据?如果有,怎样处理(例如,元胞数组的元素自身还可以是元胞数组,或者结构体的域是否要继续判断是不是字符串)?

  2. 如果元胞数组只包含字符串,或者,只处理字符串而忽略其他类型,则可以用一个循环遍历元胞数组的每个元素,对每个字符串进行你要求的操作。

  3. 求一个字符串中某字符出现的次数非常简单,例如,求str中'a'的个数,直接用:sum(str=='a')

追问
在元胞中用不了==吧
追答
我在前面的第2条说了,通过循环对元胞数组进行遍历。
第3条是针对元胞数组的每个元素(字符串)说的。
themanisjimmy
推荐于2018-04-13 · TA获得超过2757个赞
知道小有建树答主
回答量:843
采纳率:89%
帮助的人:231万
展开全部
基本思路:遍历元胞访问元胞的每一个元素并判断该元素是不是char类型,如果是则进行相应判断做统计。考虑到cell内部嵌套cell的情况,需要用到递归,所以要把代码写成一个函数。
函数代码如下:
function [ n ] = countcell( c,t )
n=0;
s=prod(size(c));
for i=1:s
if strcmp(class(c{i}),'char')
n=n+sum(c{i}==t);
elseif strcmp(class(c{i}),'cell')
n=n+countcell(c{i},t);
end
end
end

测试代码:
%生成一个2×2×2cell,里面填充随机字符串,然后内部嵌套一个2×2×2cell,里面也填充随机字符串
clc;clear;
c=cell(2,2,2);
for j=1:7
c{j}=char(randi([1,127],1,99));
end
d=cell(2,2,2);
for j=1:8
d{j}=char(randi([1,127],1,99));
end
c{8}=d;
n=countcell(c,'6')%统计cell里面有几个‘6’字符并输出

程序没有报错。每次运行,n得到一个不同的正整数。程序无误。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式