请教:一种处理数据的特殊方法!但不知道如何编程序?
假设我有一列从大到小的数据矩阵a,最开始的数据为100吧,我想把这些数据处理成如下的形式:100到96(不包括96)之间的每个数全部用100代替,96到91(包括96,不包括91)之间的每个数用95代替,91到86(包括91,不包括86)之间的每个数用90代替,86到81(包括86,不包括81)之间的数据用85代替,依次类推哈,一直到矩阵末尾。但每两个数之间拥的数的个数不唯一,即100到96之间假如有10个数,也许96到91就有二十个数哈!同时数据中可能没有95,90,85这些数哈!大家说这该如何处理呀?谢谢![ 本帖最后由 fanzhenjie 于 2008-12-4 22:21 编辑 ] a(1,1:n)=ones(1,n)*100
依此类推
如果很长,就写个循环吧 最好是些个循环了 Help find
try a(find(a>91 & a<97))=95;
回复 地板 ChaChing 的帖子
谢谢,请问怎么写个循环呀?回复 地板 ChaChing 的帖子
假设我现在想这样排列这些数据,这样应该简单些,一个数组Y存放着许多数,最大数为100,我就想把其中大于等于95小于100的数变为(95+100)./2;大于等于90小于95的数变为(90+95)./2;大于等于85小于80的数变为(85+80)./2;依次类推,还有很多这样的数,应该怎么写循环呀,谢谢,我自己写了几句,肯定不对,也让你看看吧!y=;
ymin=95;
ymax=100;
if b=find((y>=ymin)&(y<ymax))
y(b)=(ymax+ymin)./2;
else
ymax=ymax-5;
ymin=ymin-5;
end 排成绩区段吗?
for 1F
for k=1:20, id=5*k; a(find(id-4<a & a<=id+1))=id; end
for 6F
for k=1:20, id=5*k; a(find(id-5<=a & a<id))=id-2.5; end
回复 7楼 ChaChing 的帖子
不是呀,我就是想把一个数组进行一下平滑处理,就是想把很多点处理的平滑一些!不是排成绩区段呀,谢谢楼上的!回复 7楼 ChaChing 的帖子
谢谢楼上的,对了,我把这些数据处理后怎么才能显示出我处理后的数据呀,你看我写的哪里不对我,给我指点一下呀,谢谢!a=;
for k=1:(a(1)-a(length(a)))./5, id=5*k;
a(find(id-5<=a & a<id))=id-2.5;
end
b=a;
disp('重排数据:a');disp(b) 用find就可以
但是完了以后要把数据重排序
回复 8楼 fanzhenjie 的帖子
你都按照大小顺序排下来了,曲线肯定光滑啊? 搞不懂!貌似循环程序还不好写 还要判断每次find出来的是不是空矩阵!自己试试吧!:lol
回复 9楼 fanzhenjie 的帖子
a=; b=a;for k=floor(min(a)/5):ceil(max(a)/5), id=5*k;
a(find(id-5<=a & a<id))=id-2.5;
end
[ 本帖最后由 ChaChing 于 2008-12-6 09:22 编辑 ]
页:
[1]