对输入的一维数组(按顺序列且不重复)按容差tol分类(未详细测试)

function  [op]=Class1D(num1D,tol)
%Class1D([1;2;7;14;18;50;61;62;99;200;321;322],1.5)
%对输入的一维数组num1D分类(y值),如果相邻两点的距离
%小于tol,则被划分为同一列,不足的补0
%输入的数据要是不重复的不存在0元素的数据
%num1D是列向量
%输出的是一个矩阵,每一列都表示是一类
%如果所有相邻的两个数的差值都大于tol,则返回[];
sort_num1D=sort(num1D);%从小到大
Delta=abs(sort_num1D(2:end)-sort_num1D(1:end-1));
judge=(Delta<tol);%列
if unique(judge)==0op=[];
else
count=1;
tcol=[];for zz=1:(length(sort_num1D)-1)delta=sort_num1D(zz+1)-sort_num1D(zz);if delta<toltcol=[tcol;sort_num1D(zz+1);sort_num1D(zz)];elseif length(unique(tcol))~=8tcol=[unique(tcol);zeros(8-length(unique(tcol)),1)];endtMat(:,count)=tcol;count=count+1;tcol=[];endendif length(unique(tcol))~=8tcol=[unique(tcol);zeros(8-length(unique(tcol)),1)];endtMat=[tMat,tcol];tMat(:,all(tMat==0))=[];%删除全0列op=tMat;endend

该函数主要用于识别简并能带

未详细测试,欢迎指正


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部