資源簡介
本壓縮包里有用Vc++縮寫的用迭代法計算信道容量,并畫出信道容量隨著某一個參數(shù)變化時的曲線。開發(fā)要用openGL,里面有關(guān)于它的一些例子,學(xué)起來很容易。自己可以用它畫出任意圖形的。

代碼片段和文件信息
#include?
#include?
#include?
#include?
#include?
#pragma?comment?(lib?“opengl32.lib“)
#pragma?comment?(lib?“glaux.lib“)
#include?
#include?
#include?
float?shuju1[100];
float?shujus[100];
float?shuju2[100];
float?A_B(float?pp);
void?fun();
float?b=0.001f;
const?GLfloat?factor?=?1.0f;
void?myDisplay(void)
{
int?i=0;
????GLfloat?x;
fun();
????glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1.0f?0.0f?0.0f);
glBegin(GL_LINES);
????????glVertex2f(-1.1f?0.0f);
????????glVertex2f(1.1f?0.0f);????????
glVertex2f(-1.0f0.0f);
glVertex2f(-1.0f1.0f);
????????glVertex2f(0.0f?0.0f);
????????glVertex2f(0.0f?1.0f);????????
????glEnd();
glBegin(GL_LINES);
????glVertex2f(-0.52f-0.1f);
glVertex2f(-0.48f-0.1f);
glVertex2f(-0.52f-0.15f);
glVertex2f(-0.48f-0.15f);
glVertex2f(-0.5f-0.1f);
glVertex2f(-0.5f-0.15f);
glEnd();
glBegin(GL_LINES);
????glVertex2f(0.525f-0.1f);
glVertex2f(0.475f-0.1f);
glVertex2f(0.525f-0.15f);
glVertex2f(0.475f-0.15f);
glVertex2f(0.49f-0.1f);
glVertex2f(0.49f-0.15f);
glVertex2f(0.51f-0.1f);
glVertex2f(0.51f-0.15f);
glEnd();
????glBegin(GL_LINE_STRIP);
????for(x=0.01f/factor;?x<=1.0f/factor;?x+=0.01f)
????{
????????glVertex2f(x*factor-1.0?shuju1[i++]*factor);
????}
????glEnd();
glColor3f(0.0f?1.0f?0.0f);
glBegin(GL_LINE_STRIP);
????for(x=0.01f/factori=0;?x<=1.0f/factor;?x+=0.01f)
????{
????????glVertex2f(x*factor?shuju2[i++]*factor);
????}
????glEnd();
????glFlush();
}
????
int?main(void)
{
????auxInitDisplayMode(AUX_SINGLE|AUX_INDEX);
????auxInitPosition(0?0?800?800);
????auxInitWindow(L““);
// glutCreateWindow(“第一個OpenGL程序“);
????myDisplay();
????Sleep(10?*?1000);
????return?0;
}
void?fun()
{
int?ii;
float?pp=0.0f;
float?qq=1-pp;
????printf(“信道矩陣為:\n“);
printf(“?p_yx[0][0]=1????p_yx[0][1]=0\n?p_yx[1][0]=p????p_yx[1][1]=1-p\n“);
printf(“迭代精度為:%f\n“b);
printf(“下面的數(shù)據(jù),左邊的是程序題1的數(shù)據(jù),中間的是p的值,右邊的是程序題2的數(shù)據(jù)\n“);
for(ii=0;ii<100;ii++)
{
pp=pp+0.01f;
qq=1-pp;
shuju1[ii]=A_B(pp);
shujus[ii]=(-pp)*log(pp)/log(2.0)+(-qq)*log(qq)/log(2.0);
shujus[ii]=shujus[ii]/(1-pp);
shuju2[ii]=log(1+pow(2-shujus[ii]))/log(2.0);
printf(“%f------%f------%f\n“shuju1[ii]ppshuju2[ii]);
}
printf(“上面的數(shù)據(jù),左邊的是程序題1的數(shù)據(jù),中間的是p的值,右邊的是程序題2的數(shù)據(jù)\n“);
}
float?A_B(float?pp)
{?
register?int?ij;
????register?int?k;
????int?N=2M=2;//行,列
????float?*p=NULL;
????float?*q=NULL;
????float?*d=NULL;
????float?*a=NULL;
????float?*s=NULL;???//s數(shù)組為各行概率累加求和
????float?**p_yx=NULL;???//二維數(shù)組p_yx存放信道矩陣
????float?CumaxILIU;?//C為信道容量,b為迭代精度
????p=(float?*)calloc(Nsizeof(float));???//初始化需要用到的數(shù)組
????q=(float?*)calloc(Msizeof(float));
????d=(float?*)calloc(Nsizeof(float));
????a=(float?*)calloc(Nsizeof(float));
????s=(float?*)calloc(Nsizeof(float));
????p_yx=(float?**)calloc(Nsizeof(float
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????????4958??2012-05-07?10:10??assign3??readme.txt
?????文件??????743040??2012-05-06?17:22??OpenGL2.0.rar
?????目錄???????????0??2012-05-08?09:20??OpenGL2.0\
?????目錄???????????0??2012-05-08?09:20??OpenGL2.0\OpenGL2.0\
?????目錄???????????0??2012-05-08?09:20??OpenGL2.0\OpenGL2.0\gl\
?????文件???????69083??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GL.H
?????文件???????12024??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLAUX.H
?????文件?????1312394??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLAUX.LIB
?????文件???????12794??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLext.H
?????文件??????315904??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLU.DLL
?????文件???????18282??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLU.H
?????文件???????35606??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\glu.lib
?????文件???????49514??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLU32.LIB
?????文件??????154624??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLUT.DLL
?????文件???????79654??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\glut.lib
?????文件??????237568??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLUT32.DLL
?????文件???????69580??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\GLUT32.LIB
?????文件?????1213440??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\OPENGL.DLL
?????文件??????242802??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\opengl.lib
?????文件??????336274??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\OPENGL32.LIB
?????文件???????17183??2005-10-19?15:32??OpenGL2.0\OpenGL2.0\gl\WGLEXT.H
?????目錄???????????0??2012-05-08?09:21??assign3_7\
?????文件????????4958??2012-05-07?10:10??assign3_7\assign3??readme.txt
?????文件????????4315??2012-05-06?17:10??assign3_7\assign3_7.dsp
?????文件?????????526??2012-05-06?17:05??assign3_7\assign3_7.dsw
?????文件???????50176??2012-05-08?09:02??assign3_7\assign3_7.ncb
?????文件???????48640??2012-05-08?09:02??assign3_7\assign3_7.opt
?????文件?????????252??2012-05-08?08:55??assign3_7\assign3_7.plg
?????目錄???????????0??2012-05-08?09:21??assign3_7\Debug\
?????文件??????245842??2012-05-07?21:37??assign3_7\Debug\assign3_7.exe
?????文件??????376104??2012-05-07?21:37??assign3_7\Debug\assign3_7.ilk
............此處省略11個文件信息
評論
共有 條評論