版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、程序代码:具体代码如下:/ #include <vcl.h>#pragma hdrstop#include <math.h>#include "VV.h"#include "math.hpp"/#pragma package(smart_init)#pragma resource "*.dfm"TForm1 *Form1;/ _fastcall TForm1:TForm1(TComponent* Owner): TForm(Owner)/void _fastcall TForm1:Button6Click(TO
2、bject *Sender)Application->MessageBox(" 成训练矢量, 成初始码书, 生成最优码书, 进 行码字转换 "," 说明信息 ",MB_OK);int Range1;void _fastcall TForm1:Edit5Change(TObject *Sender) Range1=atoi(this->Edit5->Text.c_str();/ float a1000; float b32,c1000,f32;void _fastcall TForm1:Button1Click(TObject *Send
3、er) ListBox1->Clear();ListBox2->Clear();ListBox3->Clear();Edit1->Clear();Edit2->Clear(); Memo1->Clear();给 a 赋值 且保证各个元素不相等long int x,y; for(x=0;x<1000;x+) / y=random(Range1); for(int j=0;j<1000;j+) if(y=aj) break; ax=y; for(x=0;x<1000;x+) y=random(Range1);for(int j=0;j<1
4、000;j+) if(y=cj) break; cx=y; for(x=0;x<1000;x+) AnsiString an;an=ax; an+=" " an+="," an+=" " an+=cx;ListBox1->Items->Add(an);/double Mean1;void _fastcall TForm1:Edit3Change(TObject *Sender) Mean1=atoi(this->Edit3->Text.c_str();/double StdDev1;void _fastc
5、all TForm1:Edit4Change(TObject *Sender) StdDev1=atoi(this->Edit4->Text.c_str();/void _fastcall TForm1:Button5Click(TObject *Sender) ListBox1->Clear();给 a 赋值 且保证各个元素不相等ListBox2->Clear(); ListBox3->Clear(); Edit1->Clear(); Edit2->Clear(); Memo1->Clear(); double y; int x; for(x=
6、0;x<1000;x+) / y=RandG(Mean1,StdDev1); for(int j=0;j<1000;j+) if(y=aj) break; ax=y; for(x=0;x<1000;x+) y=RandG(Mean1,StdDev1); for(int j=0;j<1000;j+) if(y=cj) break; cx=y; for(x=0;x<1000;x+) AnsiString an; an=ax; an+=" " an+="," an+=" " an+=cx;ListBox1-&g
7、t;Items->Add(an); /void _fastcall TForm1:Button2Click(TObject *Sender) /ListBox2->Clear(); for(int q=0;q<32;q+) bq=0; fq=0;初始化数组 bfor(int q=0;q<32;q+) bq=aq+50; fq=cq+50; AnsiString an; an=bq;an+=" " an+="," an+=" " an+=fq;ListBox2->Items->Add(an);/lon
8、g int num32,numc32,num132,numc132 ;int y8; double centR32,sum32,sumc32,centRc32,dminc1000,dmin1000,centR132,sum132 ,sumc132,centRc132;void _fastcall TForm1:Button3Click(TObject *Sender) ListBox3->Clear();long int Indexa,Indexb,d,R,q,e,Indexc,Rc;long double D, Dn,sumd,sumdc,dc,Dc;R=0;d=0;e=1;sumd=
9、0;D=0;Dn=0;Indexc=0;Rc=0;dc=0;sumdc=0;Dc=0; for(q=0;q+;q<32) / 初始化数组 numq=0; sumq=0;centRq=0; sumcq=0; numcq=0;centRq=0; centRcq=0;设置布尔型 tag 用于控制循环bool tag = true; / while(tag)for(Indexa=0;Indexa<1000;Indexa+) / bool isFirst = true;for(Indexb=0;Indexb<32;Indexb+) d=fabs(aIndexa-bIndexb)* (a
10、Indexa-bIndexb)+(cIndexa-fIndexb)*(cIndexa-fIndexb); if(isFirst) dminIndexa = d; / isFirst = false; if(d<=dminIndexa) dminIndexa=d;R=Indexb; / if(d=0) break; sumR+=aIndexa; / sum1R+=cIndexa; numR+; / sumd+=dminIndexa; D=sumd/1000;for(R=0;R<32;R+) centRR=sumR/numR;centR1R=sum1R/numR; for(Indexa
11、=0;Indexa<1000;Indexa+) /bool isFirst=true; for(Indexc=0;Indexc<32;Indexc+) double给 d 赋初值/最邻近原则双层循环让 a 中所有元素遍历 b 中的元素将训练矢量划分到最近的码书内计算每个胞腔内元素的总和计算每个胞腔内元素的个数/计算 a 中 1000 个元素的最小失真的和/计算平均失真求质心数组centR双层循环让 a 遍历执质心中的元素dc=(aIndexa-centRIndexc)*(aIndexa-centRIndexc)+(cIndexa-centR1Indexc)*(cIndexa-cen
12、tR1Indexc);/ 计算新的失真 if(isFirst) dmincIndexa=dc; isFirst=false;if(dc<=dmincIndexa) dmincIndexa=dc; Rc=Indexc; / sumcRc+=aRc; sumc1Rc+=cRc;sumdc+=dmincIndexa; numcRc+; Dc=sumdc/1000;Dn=fabs(D-Dc)/Dc);/最邻近原则将训练矢量划分到最近的码书内/if(Dn<=e)/ 与给的的阈值 是 就把值输出 把变量的值放进去 下一次循环做准备 tag=false; / tag = false ListBo
13、x3->Clear();AnsiString an; int rr;for(int r=0;r<32;r+) / an=r;an+=" 号码字 " an+=": " ;计算新的平均失真 计算上一次平均失真与这一次平均失真的下降程度 e 相比 看是否符合条件 否取如果是 就把 Tag 赋值 false已经得到需要的结果 =true 说明 结果还不是需要的输出最优码书an+=centRr; an+=" " an+="," an+=" " an+=centR1r; ListBox3->
14、;Items->Add(an); else / 如果不符合则以得到的质心为新的码书for(Rc=0;Rc<32;Rc+) bRc=centRRc; fRc=centR1Rc;/令质心为新码书tag=true; /int N;void _fastcall TForm1:Edit1Change(TObject *Sender) N =atoi(this->Edit1->Text.c_str(); /从 Edit1 中读取所输入的数int N1;void _fastcall TForm1:Edit2Change(TObject *Sender) N1=atoi(this-&g
15、t;Edit2->Text.c_str();/void _fastcall TForm1:Button4Click(TObject *Sender) int R=0; double dm=0,dmm=0; bool isFirst=true;for(int r=0;r<32;r+)dmm=(N-centRr)*(N-centRr)+(N1-centR1r)*(N1-centR1r); / if(isFirst) / dm=dmm; isFirst=false;else if(dmm<dm) dm=dmm; / R=r; /初始化最小失真 dm得到最小失真 得到所输入数在第几个
16、胞腔内计算失真Memo1->Clear();AnsiString an;an=R;an+=" 号码书 "an+=": " an+=centRR;an+=" "an+=","an+=" "an+=centR1R;an+=" 索引号为 " for(int j=0;j<8;j+)yj=R%2 ;R=R/2;for(int j=7;j>=0;j-) an+=yj;在Memo仲输出所对应的码字Memo1->Lines->Add(an); /void _fastcall TForm1:Button7Click(TObject *Sender) ListBox1->Clear();ListBox2->Clear(); ListBox3->Cle
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 阳光房门窗采购合同
- 购销活动帐篷合同
- 防空工程建设项目招标
- 水泥采购合同书样式
- 苗木购销合同简单范本
- 教育培训服务合同
- 正式签署的房屋地基交易合同
- 幼儿食材选购协议
- 建设工程监理招标文件编制指南
- 商务保安服务合同样本
- 2023年江苏自考11002公司法与企业法试卷
- 六年级数学老师家长会课件PPT
- 非计划性拔管的应急预案
- 社会信用法概论知到章节答案智慧树2023年湘潭大学
- 胸腺-胸腺瘤课件完整版
- 中国真正丹道理法及工程次第阐真
- 注册安全工程师延续注册申请表参考模板范本
- 招聘简章 招聘简章(4篇)
- 解方程 200道 计算题
- GB/T 39750-2021光伏发电系统直流电弧保护技术要求
- GB/T 3672.2-2002橡胶制品的公差第2部分:几何公差
评论
0/150
提交评论