移动学习网 导航

用matlab 统计连续数值的个数 matlab中怎么统计某一行某个数字前连续出现另外一个数字的...

2024-05-23m.verywind.com
matlab数组中连续N个大于某个数的个数统计~

A = [1 2 1 1 2 3 4 1 1 3 3 3];count = 0;for s = 1:length(A)-2 B = A(s:s+2);%获得连续三个数 if (length(find(B >= 2))==3) %判断三个元素是否大于等于2 count = count+1; %计数 endendcount

用多层for循环的方法是不现实的。可以通过每次加前两行,然后得到新的结果作为第一行,当然第一行和后边的是不一样长的。按照你这个讲解就是:
1.第一行和第二行交叉相加,得到了3*3=9个值,作为新的第一行。
2.用新的第一行和第三行交叉相加,可以得到9*3=27个。涪鸡帝课郜酒佃旬顶莫

程序给你写出来了,x可以使n行k列的,我这里取n=3,k=10,所以应该有1000长的结果,你可以自己改。

x=rand([3,10]);
[n,k]=size(x);
result=x(1,:);
for ind=2:n
[ind1,ind2]=meshgrid(1:length(result),1:k);
temp=x(ind,:);
result=result(ind1)+temp(ind2);
result=result(:);
end

可以使用“累积和”的思想来做这个,一共4行即可。
假设数据是x:
x =[1 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 0 1 0 1 0];
计算过程:
x= reshape(x,[length(x),1]);
temp = [0;x];
countsum = (cumsum(~temp));
Y= sum(countsum == mode(countsum)) - 1;
%使用累积和来找连续的1,但是首位前需要补一个数防止首位不能识别
%计算连续0的累计值,并找到最长累计值不变的数值
%对temp求反是为了让求1变成求0
% 最后的-1是对首个0出现时导致的两个相同的修

A 是那数据
for i=1:N-5
if(sum(A(i:i+5)==6)
提取
end
end

户户网菜鸟学习
联系邮箱
返回顶部
移动学习网