Here's a way with less code... # assume original matrix is X u <- unique( sort(X) ) ucdf <- cumsum( tabulate(X)[u] ) Xcdf <- matrix(ucdf[ match(X, u) ], 8)
Michael On 16 September 2010 14:58, chuan zun liang <chuan...@yahoo.com.my> wrote: > Hello Friend: > Thanks a lot. I kindly told that Micheal already misunderstand what i > want.But never mind.I also can share with you what I want. > I got a set of matrix(image) as below: > x<-t(matrix(y,8)) >> x > [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] > [1,] 52 55 61 66 70 61 64 73 > [2,] 63 59 55 90 109 85 69 72 > [3,] 62 59 68 113 144 104 66 73 > [4,] 63 58 71 122 154 106 70 69 > [5,] 67 61 68 104 126 88 68 70 > [6,] 79 65 60 70 77 68 58 75 > [7,] 85 71 64 59 55 61 65 83 > [8,] 87 79 69 68 65 76 78 94 > y just the matrix change to vector. > y<-c(52,55,61,66,70,61,64,73,63,59,55,90,109,85,69,72,62,59,68,113,144,104,66,73,63,58,71,122,154,106,70,69,67,61,68,104,126,88,68,70,79,65,60,70,77,68,58,75,85,71,64,59,55,61,65,83,87,79,69,68,65,76,78,94) > Then, I want doing for histogram equalization for my image.What I want is I > want to replace 52 by value of the cumulative distribution function. For > example,frequency 52 is 1 and frequency for 55 is 3, so cumulative frequency > for 55 is 4.So, I want replace 52 by 1 and 55 by 4 and so on until 94 > replace 94. > This is the script I get(just a part for histogram equalization): > cdfv<-function(p) > {a<-cumsum(unlist(lapply(split(p,f=p),length))) > b<-sort(unique(p)) > for(i in c(1:37)) > {x<-replace(x,x==b[i],a[i])} > c(x)} > matrix(cdfv(y),8) > Thank you. > Chuan > > > ________________________________ > From: Michael Bedward <michael.bedw...@gmail.com> > To: chuan zun liang <chuan...@yahoo.com.my>; Rhelp <r-help@r-project.org> > Sent: Wednesday, 15 September 2010 16:08:20 > Subject: Re: [R] Asking Favor > > Hello Chuan, > > If you just want a matrix with the numbers 1 to 64 arranged by row... > > m <- matrix(1:64, ncol=8, byrow=TRUE) > > But perhaps I don't understand your question properly ? > > Michael > > > On 16 September 2010 12:46, chuan zun liang <chuan...@yahoo.com.my> wrote: >> Dear Prof: >> >> My name is Chuan.I from Malaysia.I am a beginner for R.I need favor for >> Prof. >> >> This is my data: >> >> y<-c(52,55,61,66,70,61,64,73,63,59,55,90,109,85,69,72,62,59,68,113,144,104,66,73,63,58,71,122,154,106,70,69,67,61,68,104,126,88,68,70,79,65,60,70,77,68,58,75,85,71,64,59,55,61,65,83,87,79,69,68,65,76,78,94) >> >> >> and I form it into matrix as below: [,1] [,2] [,3] [,4] [,5] [,6] [,7] >> [,8] >> [1,] 52 63 62 63 67 79 85 87 >> [2,] 55 59 59 58 61 65 71 79 >> [3,] 61 55 68 71 68 60 64 69 >> [4,] 66 90 113 122 104 70 59 68 >> [5,] 70 109 144 154 126 77 55 65 >> [6,] 61 85 104 106 88 68 61 76 >> [7,] 64 69 66 70 68 58 65 78 >> >> [8,] 73 72 73 69 70 75 83 94 >> >> But i want replace 52 by 1, 63 by 2, 63 by 5, ........94 by 64. Is it >> possible I >> do it in R.Thank a lot. >> >> Chuan >> >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help@r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> > > ______________________________________________ R-help@r-project.org mailing list https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.