在matlab中求一个元胞数组中一个字符出现的次数?
2个回答
展开全部
基本思路:遍历元胞访问元胞的每一个元素并判断该元素是不是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得到一个不同的正整数。程序无误。
函数代码如下:
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得到一个不同的正整数。程序无误。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询