完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
感謝 meatbird 及edifiers2008
可以找出任何值得连续值(不包含零) 例如 找出 a= [0 0 2 2 2 2 3 5 2 0 1] 之中的 2 的连续值下標及连续多少個 2 [idx res]=findcont1(a,1,[2,2]) % 第一個式输入矩阵%第二個必须达到 1 個以上的连续值 %第三個輸入是找出连续值的范围 >> idx= 3 9 % 连续值的最前面一個下标 res=4 1 % 相对应的连续次数 代码如下: function [idx2 res2]=findcont1(V,h,n) %[idx res]=findcont1(V,h,n) % V 輸入的矩陣(限制一維) % n 找出範圍內的連續值 預設值 0~inf % h 找出連續 h 各以上的連續值 預設值 h=1 如果輸入矩陣將改變成預設值 % % % [idx res]=findcont1([-3 -2 3 0 3 4],[],[-5 4]) % idx = 1 5 % res = 3 2 % % [idx res]=findcont1([-3 -2 3 0 3 4],3,[-5 4]) % idx = 1 % res = 3 % % % a=[1 1 0 0 0 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1]; % [r y]=findcont1(a,3,[-5 4]) % idx = 6 18 24 % res = 5 5 4 % % [r y]=findcont1(a,[],[-5 4]) % idx = 1 6 13 16 18 24 % res = 2 5 2 1 5 4 if nargin==2 n=[0 inf]; elseif nargin==1 h=1; n=[0 inf]; else if size(n,2)==1 n=[n inf]; end end if isempty(h)||sum(h)==0||size(h,2)~=1 h=1; end V(V>=n(1)&V<=n(2)&V~=0)=NaN; V(~isnan(V))=0; V(isnan(V))=1; a=[0,V,0]; idx = find(diff(a)==1); b = [0,a(1:end-1)]; c = [a(2:end),0]; res1 = find(b>a) - find(c>a) - 1; res2=res1(res1 >=h); idx2=idx(res1 >=h); end |
|
相关推荐
|
|
学习
|
|
|
|
|
|
1592 浏览 1 评论
200圆!求助大佬给一份VSG并网和离网模式的simulink仿真
1875 浏览 0 评论
MATLAB(3)--矩阵的引用(sub2ind、ind2sub、reshape函数使用)
2696 浏览 0 评论
3033 浏览 0 评论
4095 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 12:28 , Processed in 0.501880 second(s), Total 38, Slave 31 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号