dynamic array use?
-
dear all int * nColumnCounts1 nColumnCounts2 nColumnCounts3 nColumnCounts4 nColumnCounts5 =new int[constant]; the following is dynamic arrays, and nColumnCounts1,nColumnCounts2,nColumnCounts3 were calculated already correctly, now i would like to calculate nColumnCounts4,nColumnCounts5 as per following formular. is this right way? nColumnCounts4[m]=abs(nColumnCounts1[m]-nColumnCounts2[m]); nColumnCounts5[m]=abs(nColumnCounts2[m]-nColumnCounts3[m]); and then i can get new nColumnCounts4,5. however i couldn't correct result. anyone has suggestion to me, thanks a lot
gentleguy
-
dear all int * nColumnCounts1 nColumnCounts2 nColumnCounts3 nColumnCounts4 nColumnCounts5 =new int[constant]; the following is dynamic arrays, and nColumnCounts1,nColumnCounts2,nColumnCounts3 were calculated already correctly, now i would like to calculate nColumnCounts4,nColumnCounts5 as per following formular. is this right way? nColumnCounts4[m]=abs(nColumnCounts1[m]-nColumnCounts2[m]); nColumnCounts5[m]=abs(nColumnCounts2[m]-nColumnCounts3[m]); and then i can get new nColumnCounts4,5. however i couldn't correct result. anyone has suggestion to me, thanks a lot
gentleguy
Hint 1: Post the actual code. Hint 2: Use the
code block
button to surround code snippets with<pre>
tags. :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
Hint 1: Post the actual code. Hint 2: Use the
code block
button to surround code snippets with<pre>
tags. :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]thanks for your reminder. this is actual code. i would like to get nColumnCounts4,nColumnCounts5. is this code right? however i just can get same big value. couldn't get what i want. where is problem, thanks. nColumnCounts1,nColumnCounts2,and nColumnCounts3 are all right, i checked already.
int a = _iBoundheight%3; // remainder
for(iY=0;iY<(a+(static\_cast<int>(\_iBoundheight/3)));iY++) { for (iX=\_iBoundx;iX<\_iBoundwidth;iX++) { if (ImgArray\[iX+iY\*\_iBoundwidth\] == 255) { nColumnCounts1\[iX\]++; } } } for(iY=(a+(static\_cast<int>(\_iBoundheight/3)));iY<(a+2\*(static\_cast<int>(\_iBoundheight/3)));iY++) { for(iX=\_iBoundx; iX<\_iBoundwidth; iX++) { if (ImgArray\[iX+iY\*\_iBoundwidth\] == 255) { nColumnCounts2\[iX\]++; } } } for(iY=(a+2\*(static\_cast<int>(\_iBoundheight/3)));iY<\_iBoundheight;iY++) { for(iX=\_iBoundx; iX<\_iBoundwidth; iX++) { if (ImgArray\[iX+iY\*\_iBoundwidth\] == 255) { nColumnCounts3\[iX\]++; } } } // Average int a1,a2,a4,a5,s1,s2,s3,r1,r2,r3,av1,av2; a4=a5=0; s1=s2=0; r1=r2=0; av1=av2=0; // Standard deviation for (int m=0;m<\_iBoundwidth;m++) { nColumnCounts4\[m\]=abs(nColumnCounts1\[m\]-nColumnCounts2\[m\]); nColumnCounts5\[m\]=abs(nColumnCounts2\[m\]-nColumnCounts3\[m\]); a4=a4+nColumnCounts4\[m\]; a5=a5+nColumnCounts5\[m\]; } av1=a4/\_iBoundwidth; av2=a5/\_iBoundwidth; for (int m2=0;m2<\_iBoundwidth;m2++) { s1=s1+pow(nColumnCounts4\[m2\]-av1,2.0); s2=s2+pow(nColumnCounts5\[m2\]-av2,2.0); } \_fFeature\[0\] = sqrt(s1/\_iBoundwidth); \_fFeature\[1\] = sqrt(s2/\_iBoundwidth); delete\[\] ImgArray; delete\[\] nColumnCounts1; delete\[\] nColumnCounts2; delete\[\] nColumnCounts3; delete\[\] nColumnCounts; delete\[\] nColumnCounts4; delete\[\] nColumnCounts5; return true;
}
gentleguy
-
thanks for your reminder. this is actual code. i would like to get nColumnCounts4,nColumnCounts5. is this code right? however i just can get same big value. couldn't get what i want. where is problem, thanks. nColumnCounts1,nColumnCounts2,and nColumnCounts3 are all right, i checked already.
int a = _iBoundheight%3; // remainder
for(iY=0;iY<(a+(static\_cast<int>(\_iBoundheight/3)));iY++) { for (iX=\_iBoundx;iX<\_iBoundwidth;iX++) { if (ImgArray\[iX+iY\*\_iBoundwidth\] == 255) { nColumnCounts1\[iX\]++; } } } for(iY=(a+(static\_cast<int>(\_iBoundheight/3)));iY<(a+2\*(static\_cast<int>(\_iBoundheight/3)));iY++) { for(iX=\_iBoundx; iX<\_iBoundwidth; iX++) { if (ImgArray\[iX+iY\*\_iBoundwidth\] == 255) { nColumnCounts2\[iX\]++; } } } for(iY=(a+2\*(static\_cast<int>(\_iBoundheight/3)));iY<\_iBoundheight;iY++) { for(iX=\_iBoundx; iX<\_iBoundwidth; iX++) { if (ImgArray\[iX+iY\*\_iBoundwidth\] == 255) { nColumnCounts3\[iX\]++; } } } // Average int a1,a2,a4,a5,s1,s2,s3,r1,r2,r3,av1,av2; a4=a5=0; s1=s2=0; r1=r2=0; av1=av2=0; // Standard deviation for (int m=0;m<\_iBoundwidth;m++) { nColumnCounts4\[m\]=abs(nColumnCounts1\[m\]-nColumnCounts2\[m\]); nColumnCounts5\[m\]=abs(nColumnCounts2\[m\]-nColumnCounts3\[m\]); a4=a4+nColumnCounts4\[m\]; a5=a5+nColumnCounts5\[m\]; } av1=a4/\_iBoundwidth; av2=a5/\_iBoundwidth; for (int m2=0;m2<\_iBoundwidth;m2++) { s1=s1+pow(nColumnCounts4\[m2\]-av1,2.0); s2=s2+pow(nColumnCounts5\[m2\]-av2,2.0); } \_fFeature\[0\] = sqrt(s1/\_iBoundwidth); \_fFeature\[1\] = sqrt(s2/\_iBoundwidth); delete\[\] ImgArray; delete\[\] nColumnCounts1; delete\[\] nColumnCounts2; delete\[\] nColumnCounts3; delete\[\] nColumnCounts; delete\[\] nColumnCounts4; delete\[\] nColumnCounts5; return true;
}
gentleguy
gentleguy wrote:
av1=a4/_iBoundwidth; av2=a5/_iBoundwidth;
av1, av2
should be declareddouble
(orfloat
). Then change the above expression to:av1 = (double)a4 / _iBoundwidth;
av2 = (double)a5 / _iBoundwidth;gentleguy wrote:
s1=s1+pow(nColumnCounts4[m2]-av1,2.0); s2=s2+pow(nColumnCounts5[m2]-av2,2.0);
Again,
s1, s2
should be declareddouble
. Those declarations will fix the (otherwise wrong) above expression . BTW: Are you aware that all thatstatic_cast
s you're using are useless (and contributes to overall code entropy)? :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles] -
gentleguy wrote:
av1=a4/_iBoundwidth; av2=a5/_iBoundwidth;
av1, av2
should be declareddouble
(orfloat
). Then change the above expression to:av1 = (double)a4 / _iBoundwidth;
av2 = (double)a5 / _iBoundwidth;gentleguy wrote:
s1=s1+pow(nColumnCounts4[m2]-av1,2.0); s2=s2+pow(nColumnCounts5[m2]-av2,2.0);
Again,
s1, s2
should be declareddouble
. Those declarations will fix the (otherwise wrong) above expression . BTW: Are you aware that all thatstatic_cast
s you're using are useless (and contributes to overall code entropy)? :)If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]thanks however i couldn't get nColumnCOunts4,5 arrays value. what is problem. i corrected as per your remind.thanks a lot.
int *nColumnCounts = new int[_iBoundwidth]; //whole image
int *nColumnCounts1 = new int[_iBoundwidth]; //1st part
int *nColumnCounts2 = new int[_iBoundwidth]; //2nd part
int *nColumnCounts3 = new int[_iBoundwidth]; //3rd part
int *nColumnCounts4 = new int[_iBoundwidth];
int *nColumnCounts5 = new int[_iBoundwidth];for (int i=0;i<\_iBoundwidth;i++) { nColumnCounts1\[i\]=0; nColumnCounts2\[i\]=0; nColumnCounts3\[i\]=0; nColumnCounts4\[i\]=0; nColumnCounts5\[i\]=0; nColumnCounts\[i\]=0; }
int a = _iBoundheight%3; // remainder for(iY=0;iY<(a+(static_cast<int>(_iBoundheight/3)));iY++) { for (iX=_iBoundx;iX<_iBoundwidth;iX++) { if (ImgArray[iX+iY*_iBoundwidth] == 255) { nColumnCounts1[iX]++; } } } for(iY=(a+(static_cast<int>(_iBoundheight/3)));iY<(a+2*(static_cast<int>(_iBoundheight/3)));iY++) { for(iX=_iBoundx; iX<_iBoundwidth; iX++) { if (ImgArray[iX+iY*_iBoundwidth] == 255) { nColumnCounts2[iX]++; } } } for(iY=(a+2*(static_cast<int>(_iBoundheight/3)));iY<_iBoundheight;iY++) { for(iX=_iBoundx; iX<_iBoundwidth; iX++) { if (ImgArray[iX+iY*_iBoundwidth] == 255) { nColumnCounts3[iX]++; } } } // Average int a1,a2,a4,a5,s1,s2,s3,r1,r2,r3,av1,av2; a4=a5=0; s1=s2=0; r1=r2=0; av1=av2=0; // Standard deviation for (int m=0;m<_iBoundwidth;m++) { nColumnCounts4[m]=abs(nColumnCounts1[m]-nColumnCounts2[m]); nColumnCounts5[m]=abs(nColumnCounts2[m]-nColumnCounts3[m]); a4=a4+nColumnCounts4[m]; a5=a5+nColumnCounts5[m]; } av1=a4/_iBoundwidth; av2=a5/_iBoundwidth; for (int m2=0;m2<_iBoundwidth;m2++) { s1=s1+pow(nColumnCounts4[m2]-av1,2.0); s2=s2+pow(nColumnCounts5[m2]-av2,2.0); } _fFeature[0] = sqrt(s1/_iBoundwidth); _fFeature[1] = sqrt(s2/_iBoundwidth); delete[] ImgArray; delete[] nColumnCounts1; delete[] nColumnCounts2; delete[] nColumnCounts3; delete[] nColumnCounts; delete[] nColumnCounts4; delete[] nColumnCounts5; return true;}
gentleguy
-
thanks however i couldn't get nColumnCOunts4,5 arrays value. what is problem. i corrected as per your remind.thanks a lot.
int *nColumnCounts = new int[_iBoundwidth]; //whole image
int *nColumnCounts1 = new int[_iBoundwidth]; //1st part
int *nColumnCounts2 = new int[_iBoundwidth]; //2nd part
int *nColumnCounts3 = new int[_iBoundwidth]; //3rd part
int *nColumnCounts4 = new int[_iBoundwidth];
int *nColumnCounts5 = new int[_iBoundwidth];for (int i=0;i<\_iBoundwidth;i++) { nColumnCounts1\[i\]=0; nColumnCounts2\[i\]=0; nColumnCounts3\[i\]=0; nColumnCounts4\[i\]=0; nColumnCounts5\[i\]=0; nColumnCounts\[i\]=0; }
int a = _iBoundheight%3; // remainder for(iY=0;iY<(a+(static_cast<int>(_iBoundheight/3)));iY++) { for (iX=_iBoundx;iX<_iBoundwidth;iX++) { if (ImgArray[iX+iY*_iBoundwidth] == 255) { nColumnCounts1[iX]++; } } } for(iY=(a+(static_cast<int>(_iBoundheight/3)));iY<(a+2*(static_cast<int>(_iBoundheight/3)));iY++) { for(iX=_iBoundx; iX<_iBoundwidth; iX++) { if (ImgArray[iX+iY*_iBoundwidth] == 255) { nColumnCounts2[iX]++; } } } for(iY=(a+2*(static_cast<int>(_iBoundheight/3)));iY<_iBoundheight;iY++) { for(iX=_iBoundx; iX<_iBoundwidth; iX++) { if (ImgArray[iX+iY*_iBoundwidth] == 255) { nColumnCounts3[iX]++; } } } // Average int a1,a2,a4,a5,s1,s2,s3,r1,r2,r3,av1,av2; a4=a5=0; s1=s2=0; r1=r2=0; av1=av2=0; // Standard deviation for (int m=0;m<_iBoundwidth;m++) { nColumnCounts4[m]=abs(nColumnCounts1[m]-nColumnCounts2[m]); nColumnCounts5[m]=abs(nColumnCounts2[m]-nColumnCounts3[m]); a4=a4+nColumnCounts4[m]; a5=a5+nColumnCounts5[m]; } av1=a4/_iBoundwidth; av2=a5/_iBoundwidth; for (int m2=0;m2<_iBoundwidth;m2++) { s1=s1+pow(nColumnCounts4[m2]-av1,2.0); s2=s2+pow(nColumnCounts5[m2]-av2,2.0); } _fFeature[0] = sqrt(s1/_iBoundwidth); _fFeature[1] = sqrt(s2/_iBoundwidth); delete[] ImgArray; delete[] nColumnCounts1; delete[] nColumnCounts2; delete[] nColumnCounts3; delete[] nColumnCounts; delete[] nColumnCounts4; delete[] nColumnCounts5; return true;}
gentleguy
Please re-format your code. [added] actually you did follow NONE of my advices (as can be seen in posted code). [/added] :)
If the Lord God Almighty had consulted me before embarking upon the Creation, I would have recommended something simpler. -- Alfonso the Wise, 13th Century King of Castile.
This is going on my arrogant assumptions. You may have a superb reason why I'm completely wrong. -- Iain Clarke
[My articles]modified on Thursday, July 17, 2008 3:09 AM