当前位置:文档之家› matlab练习程序(Harris角点检测)

matlab练习程序(Harris角点检测)

matlab练习程序(Harris角点检测)
matlab练习程序(Harris角点检测)

close all;

clear all;

clc;

img=imread('rice.png');

imshow(img);

[m n]=size(img);

tmp=zeros(m+2,n+2);

tmp(2:m+1,2:n+1)=img;

Ix=zeros(m+2,n+2);

Iy=zeros(m+2,n+2);

E=zeros(m+2,n+2);

Ix(:,2:n)=tmp(:,3:n+1)-tmp(:,1:n-1);

Iy(2:m,:)=tmp(3:m+1,:)-tmp(1:m-1,:);

Ix2=Ix(2:m+1,2:n+1).^2;

Iy2=Iy(2:m+1,2:n+1).^2;

Ixy=Ix(2:m+1,2:n+1).*Iy(2:m+1,2:n+1);

h=fspecial('gaussian',[77],2);

Ix2=filter2(h,Ix2);

Iy2=filter2(h,Iy2);

Ixy=filter2(h,Ixy);

Rmax=0;

R=zeros(m,n);

for i=1:m

for j=1:n

M=[Ix2(i,j) Ixy(i,j);Ixy(i,j) Iy2(i,j)];

R(i,j)=det(M)-0.06*(trace(M))^2;

if R(i,j)>Rmax

Rmax=R(i,j);

end

end

end

re=zeros(m+2,n+2);

tmp(2:m+1,2:n+1)=R;

img_re=zeros(m+2,n+2);

img_re(2:m+1,2:n+1)=img;

for i=2:m+1

for j=2:n+1

if tmp(i,j)>0.01*Rmax &&...

tmp(i,j)>tmp(i-1,j-1) && tmp(i,j)>tmp(i-1,j) && tmp(i,j)>tmp(i-1,j+1) &&...

tmp(i,j)>tmp(i,j-1) && tmp(i,j)>tmp(i,j+1) &&...

tmp(i,j)>tmp(i+1,j-1) && tmp(i,j)>tmp(i+1,j) && tmp(i,j)>tmp(i+1,j+1) img_re(i,j)=255;

end

end

end

figure,imshow(mat2gray(img_re(2:m+1,2:n+1)));

读书卡制作方案四年级组

读书卡制作方案四年级 组 Coca-cola standardization office【ZZ5AB-ZZSYT-ZZ2C-ZZ682T-ZZT18】

龙隐小学“醉书香”读书卡制作展示活动方案 四年级组 为了鼓励学生积极参加学校组织的“语文月”活动,引导学生多读书、勤读书、读好书,促进良好的读书风气的形成,同时也为了展现学生的个性阅读,在方寸之间展示阅读成果和学生的艺术才华,我们年级特举行本次“读书卡”制作活动。 一、参加对象 全体四年级学生 二、展示时间 2016年3月28日至3月31日 三、评委 全体四年级语文教师 四、评比要求 “读书卡”A4或不超过A4的大小,“读书卡”,可以是“好书推介卡”,也可以是“阅读心得卡”等。要求主题鲜明、内容健康、设计新颖。形状、色彩、纸质不限,既可手工制作,也可以用电脑制作。提倡图文并茂,但文字与配图内容要相吻合。 1、好书推介卡 学生选择自己最欣赏、最喜爱的好书,在认真阅读的基础上,把好书中的主要内容(或重要篇章的主要内容)、值得阅读的原

因,以及部分精彩语句,摘录、编写在“好书推介卡”上,并填上推介人的班级、姓名。一张卡以介绍一本书为主。 2、阅读心得卡 以阅读各班指定的图书为主,在老师指导阅读的基础上认真阅读书本后,把自己的感受和启发写在阅读心得卡上,并填上阅读的书名、书作者,及填卡人的班级、姓名。一张卡以写一本书感受为主,约300-500字。低年级学生可用绘画形式表达,或部分文字用拼音表达,鼓励学生与父母共读共写心得。 五、活动展示 1、每班在划分的活动版上展示自己的作品。 2、班级间互动,参观,学生贴心意卡选出自己心仪的作品。 3、在学校展示年级选出的优秀作品。

图论算法及其MATLAB程序代码

图论算法及其MATLAB 程序代码 求赋权图G =(V ,E ,F )中任意两点间的最短路的Warshall-Floyd 算法: 设A =(a ij )n ×n 为赋权图G =(V ,E ,F )的矩阵,当v i v j ∈E 时a ij =F (v i v j ),否则取a ii =0,a ij =+∞(i ≠j ),d ij 表示从v i 到v j 点的距离,r ij 表示从v i 到v j 点的最短路中一个点的编号. ①赋初值.对所有i ,j ,d ij =a ij ,r ij =j .k =1.转向② ②更新d ij ,r ij .对所有i ,j ,若d ik +d k j <d ij ,则令d ij =d ik +d k j ,r ij =k ,转向③. ③终止判断.若d ii <0,则存在一条含有顶点v i 的负回路,终止;或者k =n 终止;否则令k =k +1,转向②. 最短路线可由r ij 得到. 例1求图6-4中任意两点间的最短路. 解:用Warshall-Floyd 算法,MATLAB 程序代码如下: n=8;A=[0281Inf Inf Inf Inf 206Inf 1Inf Inf Inf 8607512Inf 1Inf 70Inf Inf 9Inf Inf 15Inf 03Inf 8 Inf Inf 1Inf 3046 Inf Inf 29Inf 403 Inf Inf Inf Inf 8630];%MATLAB 中,Inf 表示∞ D=A;%赋初值 for (i=1:n)for (j=1:n)R(i,j)=j;end ;end %赋路径初值 for (k=1:n)for (i=1:n)for (j=1:n)if (D(i,k)+D(k,j)

四年级读书卡 ()

我的读书卡 ____年_____班姓名__________座号____第()周 书名《》 __ _____ 书名《》 _____ __ _____ _____

_________________________________________________________ 》、《》、《》等。 少花30分钟看书,周六、日每天至少保证一个小时的阅读时间; 书名《》 ____________ ____ ________

书中的故事讲给家长听; 小心保管。 附:中年级读书卡说明:

● 让学生在比较明确的提示中进行读书记录,具有方法步骤指导的作用。从文章的题目,大概内容,到具体的词、句积累,以及最后的阅读得到的启发,逐步引导学生进行阅读,纪录。 ●引导学生在课外阅读时学会取舍,整理、摘录并提取具有个性化的有效信息。 如“喜欢的词语”、“我喜欢的句子”可以是学过的,也可以是学过的或者是常用的好词好句的在学习和巩固,可以有学生根据自身的需要和喜好来决定。 ●读书笔记的量的弹性较大,可以适应不同学习能力的学生。 如:在“喜欢的词语”只给学生规定了最低限度的量,(每日2-3个词语,1个句子)如果学生读书过程中找到了更多自己喜欢的词句,可以写在每格空出来的位置 ●读书笔记最后设立了“每周一格言、名句”“每周一新闻”和“我还阅读了《》”的选填项目。除了了解学生日常的阅读情况,也促使学生阅读更多的有益的文章和报刊杂志,同时培养关心了解时事的习惯。明确读书不是为了做读书卡,而是帮助自己积累知识。 ●从四年级起,读书卡采用自评,家长评和师长评三种评价相结合的方式,旨在让学生参与自己阅读积累的评价,提高阅读的积极性。特别说明的是从四年级起把“书写”作为一项评价要求是居于中年级过渡时期学习习惯的落实培养的考虑,也是阅读积累能够在查阅时真正生效的重要前提。 ●该读书笔记集“统一的格式”和“灵活的要求”为一体,适应于不同学习层次的学生。 ●表格一目了然,便于评阅、交流,提高客观实施评价的效率。 注: ● 什么是“我喜欢的句子”(三个层次):表达准确完整的句子;生动、形象、优美的句子;自己需要或者喜爱的句子。(如自己类似的表达比较薄弱的方面) ● 什么是“我的想法”:在阅读后最想说的感想,或者是从当中受到的启发,都可以用简短的语言表达下来,这就是“我的想法”。

matlab实现中值滤波去除脉冲噪声matlab小程序

matlab实现中值滤波去除脉冲噪声matlab小程序(图像处理)2010-04-1612:58:44阅读8评论0字号:大中小 实验原理:中值滤波器是将领域内像素灰度的中值代替该像素的值,对处理脉冲噪声(椒盐噪声)非常有效。为了对一幅图像上的某个点进行中值滤波处理,必须先将掩模内欲求的像素及其领域的像素值排序,确定出中值,主要功能是使拥有不同灰度的点看起来更接近于它的邻近值。 程序说明:函数名为mid(pic_name,s)的函数,其中参数pic_name为读入的图像,s为掩模矩阵的边长,由用户自行决定。 实验说明:随着掩模矩阵的变大,我们可以看到脉冲噪声去除得更加理想,但同时图像会变得更模糊,因为各点像素与其邻域更为接近,因此,进行中值滤波时选择一个适合的掩模矩阵十分重要。另外,我们看到图像的边界处出现了黑色的斑点,这是由于我采用了0来直译边界,这种影响可用镜像反射方式对称地沿其边界扩展来减弱。 另附:其实本实验可以完全由matlab中的函数median或medfilt2简单实现,此处写出内部处理过程,主要是为了让大家理解中值滤波的具体处理过程。 程序源代码: function mid(pic_name,s) close all; s=double(s); X=imread(pic_name); Y1=imnoise(X,'salt&pepper',0.2);%对读入的图像加脉冲噪声 figure; imshow(uint8(Y1)); Y1=double(Y1); [m,n]=size(X); s2=round(s/2); s3=round(s*s/2);%中值像素点的位置

matlab源代码实例

1.硬币模拟试验 源代码: clear; clc; head_count=0; p1_hist= [0]; p2_hist= [0]; n = 1000; p1 = 0.3; p2=0.03; head = figure(1); rand('seed',sum(100*clock)); fori = 1:n tmp = rand(1); if(tmp<= p1) head_count = head_count + 1; end p1_hist (i) = head_count /i; end figure(head); subplot(2,1,1); plot(p1_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.3试验次数N与正面向上比率的函数图'); head_count=0; fori = 1:n tmp = rand(1); if(tmp<= p2) head_count = head_count + 1; end p2_hist (i) = head_count /i; end figure(head); subplot(2,1,2); plot(p2_hist); grid on; hold on; xlabel('重复试验次数'); ylabel('正面向上的比率'); title('p=0.03试验次数N与正面向上比率的函数图'); 实验结果:

2.不同次数的随机试验均值方差比较 源代码: clear ; clc; close; rand('seed',sum(100*clock)); Titles = ['n=5时' 'n=20时' 'n=25时' 'n=50时' 'n=100时']; Titlestr = cellstr(Titles); X_n_bar=[0]; %the samples of the X_n_bar X_n=[0]; %the samples of X_n N=[5,10,25,50,100]; j=1; num_X_n = 100; num_X_n_bar = 100; h_X_n_bar = figure(1);

(仅供参考)Matlab编写与调用函数

MATLAB 学习指南 第六章.编写与调用函数 在这一章中,我们讨论如何用多源代码文件来构造一个程序。首先,解释代码文件在MATLAB中如何工作。在编译语言中,例如FORTRAN,C ,或C++,代码被存储在一个或多个源文件中,在进行编译的时候,这些源文件组合在一起 形成了一个单独的可执行文件。作为一种解释型语言,MATLAB以一种更广泛的方式来处理多个源文件。MATLAB代码被放入带有扩展名.m的ASCII文件(或称m-文件)中。MATLAB 6 有一个集成字处理与调试应用程序,尽管会用到其它编辑程序如vi或emacs,集成字处理与调试应用程序仍是编译m-文件的首选程序。 有两种不同的m-文件。一种是脚本文件,它是一种最简单的文件,仅仅将MATLAB中的指令收集在一起。当在交互提示符处输入文件名执行脚本文件时,MATLAB在m-文件内读取并执行指令,就好像指令是我们输入的。而且,似乎我们能够削减m-文件的内容并将削减过的内容传到MATLAB指令窗口中。这种m-文件的用法将在6.1节中给予概述。 在6.2节中要讨论的第二种m-文件包含一个单一函数,此函数名与此m-文件名相同。这种m-文件包含一段独立的代码,这段代码具有一个明确规定的输入/输出界面;那就是说,传给这段代码一列空变量arg1,arg2,…,这段独立代码就能够被调用,然后返回输出值out1,out2,…。一个函数m-文件的第一个非注释行包含函数标头,其形式如下: 此m-文件以返回指令结束,将执行程序返回到函数被调用的位置。或者在交互指令提示符处或者在另一个m-文件内,无论何时用下列指令调用函数代码,函数代码都将被执行。 输入映射到空变量:arg1=var1,arg2=var2,等等。在函数主体内,输出值被分配给了变量out1,out2,等等。当遇到返回值时,当前值out1,out2,…在函数被调用处被映射到变量outvar1,outvar2,…。在用可变长度自变量和输出变量列表编写函数时,MATLAB允许更多的自由。例如,也可以使用下列指令来调用函数。 在此情况下,仅返回一个单一输出变量,这个变量在出口处包含函数变量out1的值。输入和输出自变量可能是字符串,数值,向量,矩阵,或者更高级的数据结构。 为什么使用函数呢?因为从每门计算机科学课程中可知,把一个大的程序分割 成多个可以单独执行一个被明确规定的和被注释过的任务的小程序会使大程序 易读,易于修改,不易于出错。在MATLAB中,先为程序编写一个主文件,或者是一个脚本文件或者更好的话,是一个能够返回一个单一整数的函数m-文件(返回1表示程序执行成功,0表示不完全程序执行,负值表示出现运行误差),这个主文件是程序的进入点。通过把m-文件当作函数来调用,此程序文件可以

四年级读书卡精修订

四年级读书卡 GE GROUP system office room 【GEIHUA16H-GEIHUA GEIHUA8Q8-

★我的读书卡★ ____年_____班姓名__________座号____第()周?

每周一格言、名句: 每周一新闻: _______________________________________________________________________________ _

本周我还阅读了《 》、《 》、《》、《》等。 **养成读 惯: 1、周一 天晚上至30分钟看书, 每天至少保证一个小时的阅读时间; 2、多和家长分享好书,把书中的故事讲给家长听; 3、爱护书,借阅的书更要小心保管。

附:中年级读书卡说明: ● 让学生在比较明确的提示中进行读书记录,具有方法步骤指导的作用。从文章的题目,大概内容,到具体的词、句积累,以及最后的阅读得到的启发,逐步引导学生进行阅读,纪录。 ●引导学生在课外阅读时学会取舍,整理、摘录并提取具有个性化的有效信息。如“喜欢的词语”、“我喜欢的句子”可以是学过的,也可以是学过的或者是常用的好词好句的在学习和巩固,可以有学生根据自身的需要和喜好来决定。 ●读书笔记的量的弹性较大,可以适应不同学习能力的学生。 如:在“喜欢的词语”只给学生规定了最低限度的量,(每日2-3个词语,1个句子)如果学生读书过程中找到了更多自己喜欢的词句,可以写在每格空出来的位置●读书笔记最后设立了“每周一格言、名句”“每周一新闻”和“我还阅读了《》”的选填项目。除了了解学生日常的阅读情况,也促使学生阅读更多的有益的文章和报刊杂志,同时培养关心了解时事的习惯。明确读书不是为了做读书卡,而是帮助自己积累知识。 ●从四年级起,读书卡采用自评,家长评和师长评三种评价相结合的方式,旨在让学生参与自己阅读积累的评价,提高阅读的积极性。特别说明的是从四年级起把“书写”作为一项评价要求是居于中年级过渡时期学习习惯的落实培养的考虑,也是阅读积累能够在查阅时真正生效的重要前提。

MATLAB小程序:将TXT中十六进制数转为十进制输出

matlab小程序:将txt中十六进制数转为十进制输出function htod(filename) clc [n]=textread(filename,'%2c'); [a b]=size(n) m=zeros(a,b); mm=zeros(a,1); for i=1:a for j=1:b switch n(i,j) case{'0'}m(i,j)=0; case{'1'}m(i,j)=1; case{'2'}m(i,j)=2; case{'3'}m(i,j)=3; case{'4'}m(i,j)=4; case{'5'}m(i,j)=5; case{'6'}m(i,j)=6; case{'7'}m(i,j)=7; case{'8'}m(i,j)=8; case{'9'}m(i,j)=9; case{'A'}m(i,j)=10; case{'B'}m(i,j)=11; case{'C'}m(i,j)=12; case{'D'}m(i,j)=13; case{'E'}m(i,j)=14; case{'F'}m(i,j)=15; otherwise m(i,j)=nan; end end end %m for i=1:a for j=1:b mm(i)=mm(i)+m(i,j)*16^(j-1); end end %mm [a b]=size(mm); size_mm=a mmm=mm'; savefile='C:\Documents and Settings\Administrator\桌面\test.txt'; fid=fopen(savefile,'w');

fprintf(fid,'%4d',mmm) fclose(fid); matlab如何读取二进制、十六进制txt文档 发现matlab如何读取十六进制的和二进制的txt文章不多。今天刚想了一种方法,所以在这里小结一下,所以matlab中文论坛共享一下,没有参考其他的文章哦,觉得好用就帮顶,不好用提意见。 原帖地址https://www.doczj.com/doc/a99344524.html,/thread-23226-1-1.html 本方法同样适合读取十六进制和二进制以外的其他进制文件, txt使用一个最简单的命令就可以读取textread这是一个十分有用,简便的函数(对于fopen fscanf而言) 读取二进制txt文件: 假如txt文档中内容为00010010001101001000,保存在pin.txt文档中 使用a=textread('pin.txt','%s')' a= '0001''0010''0011''0100''1000' 可以看到数据保存为了char格式。 使用bin2dec b=bin2dec(a)' b= 12348 可以看到成功地转换成了十进制文件。 十六进制文件: 00010010001101001000A B C AA a=textread('pin.txt','%s')' a= '0001''0010''0011''0100''1000''A''B''C''AA' 可以看到成功读取了文件。 b=hex2dec(a)' b= 11617256409610 1112170 读取完毕。 小结:本方法以简单使用方便的方法读取二进制、十六进制的txt文档,欢迎大家提出意见

matlab经典编程例题

以下各题均要求编程实现,并将程序贴在题目下方。 1.从键盘输入任意个正整数,以0结束,输出那些正整数中的素数。 clc;clear; zzs(1)=input('请输入正整数:');k=1; n=0;%素数个数 while zzs(k)~=0 flag=0;%是否是素数,是则为1 for yz=2:sqrt(zzs(k))%因子从2至此数平方根 if mod(zzs(k),yz)==0 flag=1;break;%非素数跳出循环 end end if flag==0&zzs(k)>1%忽略0和1的素数 n=n+1;sus(n)=zzs(k); end k=k+1; zzs(k)=input('请输入正整数:'); end disp(['你共输入了' num2str(k-1) '个正整数。它们是:']) disp(zzs(1:k-1))%不显示最后一个数0 if n==0 disp('这些数中没有素数!')%无素数时显示 else disp('其中的素数是:') disp(sus) end 2.若某数等于其所有因子(不含这个数本身)的和,则称其为完全数。编程求10000以内所有的完全数。 clc;clear;

wq=[];%完全数赋空数组 for ii=2:10000 yz=[];%ii的因子赋空数组 for jj=2:ii/2 %从2到ii/2考察是否为ii的因子 if mod(ii,jj)==0 yz=[yz jj];%因子数组扩展,加上jj end end if ii==sum(yz)+1 wq=[wq ii];%完全数数组扩展,加上ii end end disp(['10000以内的完全数为:' num2str(wq)])%输出 3.下列这组数据是美国1900—2000年人口的近似值(单位:百万)。 (1)若. 2c + = y+ 与试编写程序计算出上式中的a、b、c; 的经验公式为 t at bt y (2)若.bt 的经验公式为 y= 与试编写程序计算出上式中的a、b; y ae t (3)在一个坐标系下,画出数表中的散点图(红色五角星),c + =2中 ax bx y+拟合曲线图(蓝色实心线),以及.bt y=(黑色点划线)。 ae (4)图形标注要求:无网格线,横标注“时间t”,纵标注“人口数(百万)”,图形标题“美国1900—2000年的人口数据”。 (5)程序中要有注释,将你的程序和作好的图粘贴到这里。 clf;clc;clear %清除图形窗、屏幕、工作空间 t=1900:10:2000; y=[76 92 106 123 132 151 179 203 227 250 281]; p1=polyfit(t,y,2);%二次多项式拟合

(图论)matlab模板程序

(图论)matlab模板程序

第一讲:图论模型 程序一:可达矩阵算法 %根据邻接矩阵A(有向图)求可达矩阵P(有向图) function P=dgraf(A) n=size(A,1); P=A; for i=2:n P=P+A^i; end P(P~=0)=1; %将不为0的元素变为1 P; 程序二:无向图关联矩阵和邻接矩阵互换算法F表示所给出的图的相应矩阵 W表示程序运行结束后的结果 f=0表示把邻接矩阵转换为关联矩阵 f=1表示把关联矩阵转换为邻接矩阵 %无向图的关联矩阵和邻接矩阵的相互转换 function W=incandadf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F))/2; %计算图的边数 n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 W(i,k)=1; %给边的始点赋值为1 W(j,k)=1; %给边的终点赋值为1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); W(a(1),a(2))=1; %存在边,则邻接矩阵的对应值为1 W(a(2),a(1))=1;

end else fprint('Please imput the right value of f'); end W; 程序三:有向图关联矩阵和邻接矩阵互换算法 %有向图的关联矩阵和邻接矩阵的转换 function W=mattransf(F,f) if f==0 %邻接矩阵转换为关联矩阵 m=sum(sum(F)); n=size(F,1); W=zeros(n,m); k=1; for i=1:n for j=i:n if F(i,j)~=0 %由i发出的边,有向边的始点 W(i,k)=1; %关联矩阵始点值为1 W(j,k)=-1; %关联矩阵终点值为-1 k=k+1; end end end elseif f==1 %关联矩阵转换为邻接矩阵 m=size(F,2); n=size(F,1); W=zeros(n,n); for i=1:m a=find(F(:,i)~=0); %有向边的两个顶点 if F(a(1),i)==1 W(a(1),a(2))=1; %有向边由a(1)指向a(2) else W(a(2),a(1))=1; %有向边由a(2)指向a(1) end end else fprint('Please imput the right value of f'); end W;

数学建模基础入门小程序文件

自己整理MATLAB知识 1入门 例1-1 绘制正弦曲线和余弦曲线。 x=[0:0.5:360]*pi/180; plot(x,sin(x),x,cos(x)); 例1-2 求方程3x4+7x3+9x2-23=0的全部根。 p=[3,7,9,0,-23]; %建立多项式系数向量 x=roots(p) %求根 例1-3 求积分 quad('x.*log(1+x)',0,1) %‘里是被积函数’0,1分 别是积分上下限 例1-4 求解线性方程组。 a=[2,-3,1;8,3,2;45,1,-9]; %方程左面系数 b=[4;2;17]; %方程右面系数 x=inv(a)*b %也可是x=a\b的形式 例1-5 水仙花 for m=100:999 m1=fix(m/100); %求m的百位数字 m2=rem(fix(m/10),10); %求m的十位数字 m3=rem(m,10); %求m的个位数字 if m==m1*m1*m1+m2*m2*m2+m3*m3*m3 disp(m)

end end 例1-6 已知,当n=100时,求y的值。程序如下: y=0; n=100; for i=1:n y=y+1/(2*i-1); end y 例1-7 求[100,200]之间第一个能被21整除的整数 for n=100:200 if rem(n,21)~=0 continue end break end n 例1-8 若一个数等于它的各个真因子之和,则称该数为完数,如6=1+2+3,所以6是完数。求[1,500]之间的全部完数。for m=1:500 s=0; for k=1:m/2

三个遗传算法matlab程序实例

遗传算法程序(一): 说明: fga.m 为遗传算法的主程序; 采用二进制Gray编码,采用基于轮盘赌法的非线性排名选择, 均匀交叉,变异操作,而且还引入了倒位操作! function [BestPop,Trace]=fga(FUN,LB,UB,eranum,popsize,pCross,pMutation,pInversion,options) % [BestPop,Trace]=fmaxga(FUN,LB,UB,eranum,popsize,pcross,pmutation) % Finds a maximum of a function of several variables. % fmaxga solves problems of the form: % max F(X) subject to: LB <= X <= UB % BestPop - 最优的群体即为最优的染色体群 % Trace - 最佳染色体所对应的目标函数值 % FUN - 目标函数 % LB - 自变量下限 % UB - 自变量上限 % eranum - 种群的代数,取100--1000(默认200) % popsize - 每一代种群的规模;此可取50--200(默认100) % pcross - 交叉概率,一般取0.5--0.85之间较好(默认0.8) % pmutation - 初始变异概率,一般取0.05-0.2之间较好(默认0.1) % pInversion - 倒位概率,一般取0.05-0.3之间较好(默认0.2) % options - 1*2矩阵,options(1)=0二进制编码(默认0),option(1)~=0十进制编 %码,option(2)设定求解精度(默认1e-4) % % ------------------------------------------------------------------------ T1=clock; if nargin<3, error('FMAXGA requires at least three input arguments'); end if nargin==3, eranum=200;popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==4, popsize=100;pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==5, pCross=0.8;pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==6, pMutation=0.1;pInversion=0.15;options=[0 1e-4];end if nargin==7, pInversion=0.15;options=[0 1e-4];end if find((LB-UB)>0) error('数据输入错误,请重新输入(LB

如何培养自己成为Matlab编程高手

如何培养自己成为Matlab编程高手?[原创2010-08-15 20:09:59] 字号:大中小对理论的掌握并不代表对知识的真正理解。对于一些所谓高深的理论都可以 自己编写程序来检验对其理解的程度。我的经验是:只有你把程序流畅地写出来,才是真正意义上对知识理解通透了。比如,我在大三学电力系统分析的时候,就自己用Matlab语言编写了牛—拉法求潮流的程序,计算暂态稳定的简单程序,计算发电机短路电流的程序等。自然地这些专业课程都学得不错。 Matlab是一门优秀的编程语言,在欧美非常普及。选择一门顺手的编程语言可以让你在学习和工作中事倍功半。Matlab是一种语言因为它可以用作编程,也是一种软件因为它自带的工具箱具有类似软件前台的GUI界面以及能够轻松实现人机通信功能。在学习Matlab编程之前,需要对其有一个基本的了解: (1) 数据处理 能对数据进行计算、分析和挖掘,数据处理函数功能强大,命令简洁;(2) 软件工具箱 各式各样的工具箱,包括神经网络工具箱、Simulink工具箱(虽然Simulink 从底层开发出来的,但是我们认为也是工具箱的一种)、模糊工具箱、数字图像处理工具箱和金融工具箱等; (3) 精致绘图 Matlab通过“set”命令重设图形的句柄属性,可绘制精准而美观的图形;(4) 动画实现 Matlab可以进行实时动画、电影动画和AVI视频制作,并能在动画中添加*.WAVE格式的音频; (5) 与软硬件通信 Matlab接口函数可以实现与软件(比如C)和硬件(比如电子示波器)通信; (6) 平面设计 与全球最顶尖的平面设计软件之一Adobe Photoshop联袂使用,传达震撼的视觉设计效果; (7) 游戏开发

图论算法及matlab程序的三个案例

图论实验三个案例 单源最短路径问题 Dijkstra 算法 Dijkstra 算法是解单源最短路径问题的一个贪心算法。其基本思想是,设置一个顶点集合S 并不断地作贪心选择来扩充这个集合。一个顶点属于集合S 当且仅当从源到该顶点的最短路径长度已知。设v 是图中的一个顶点,记()l v 为顶点v 到源点v 1的最短距离,,i j v v V ?∈,若 (,)i j v v E ?,记i v 到j v 的权ij w =∞。 Dijkstra 算法: ① 1{}S v =,1()0l v =;1{}v V v ??-,()l v =∞,1i =,1{}S V v =-; ② S φ=,停止,否则转③; ③ ()min{(),(,)} j l v l v d v v =, j v S ∈,v S ?∈; ④ 存在1 i v +,使 1()min{()} i l v l v +=,v S ∈; ⑤ 1{} i S S v +=U , 1{} i S S v +=-,1i i =+,转②; 实际上,Dijkstra 算法也是最优化原理的应用:如果121n n v v v v -L 是从1v 到 n v 的最 短路径,则 121 n v v v -L 也必然是从1v 到 1 n v -的最优路径。 在下面的MATLAB 实现代码中,我们用到了距离矩阵,矩阵第i 行第j 行元素表 示顶点i v 到j v 的权ij w ,若i v 到j v 无边,则realmax ij w =,其中realmax 是MATLAB 常量,表示最大的实数+308)。 function re=Dijkstra(ma) %用Dijkstra 算法求单源最短路径 %输入参量ma 是距离矩阵 %输出参量是一个三行n 列矩阵,每列表示顶点号及顶点到源的最短距离和前顶点 n=size(ma,1);%得到距离矩阵的维数 s=ones(1,n);s(1)=0;%标记集合S 和S 的补 r=zeros(3,n);r(1,:)=1:n;r(2,2:end)=realmax;%初始化 for i=2:n;%控制循环次数 mm=realmax; for j=find(s==0);%集合S 中的顶点 for k=find(s==1);%集合S 补中的顶点

matlab程序设计实例

MATLAB 程序设计方法及若干程序实例 樊双喜 (河南大学数学与 信息科学学院开封475004) 摘要本文通过对 MATLAB 程序设计中的若干典型问题做简要的分析和总结,并在此基础上着重讨论了有关算法设计、程序的调试与测试、算法与程序的优化以及循环控制等方面的问题.还通过对一些程序实例做具体解析,来方便读者进行编程训练并掌握一些有关MATLAB 程序设计方面的基本概念、基本方法以及某些问题的处理技巧等.此外,在文章的最后还给出了几个常用数学方法的算法程序, 供读者参考使用.希望能对初学者进行 MATLAB 编程训练提供一些可供参考的材料,并起到一定的指导和激励作用,进而为MATLAB 编程入门打下好的基础. 关键字算法设计;程序调试与测试;程序优化;循环控制 1 算法与程序 1.1 算法与程序的关系算法被称为程序的灵魂,因此在介绍程序之前应先了 解什么是算法.所谓算 法就是对特定问题求解步骤的一种描述.对于一个较复杂的计算或是数据处理的问题,通常是先设计出在理论上可行的算法,即程序的操作步骤,然后再按照算法逐步翻译成相应的程序语言,即计算机可识别的语言. 所谓程序设计,就是使用在计算机上可执行的程序代码来有效的描述用于解决特定问题算法的过程.简单来说,程序就是指令的集合.结构化程序设计由于采用了模块分化与功能分解,自顶向下,即分而治之的方法,因而可将一个较复杂的问题分解为若干子问题,逐步求精.算法是操作的过程,而程序结构和程序流程则是算法的具体体现. 1.2MATLAB 语言的特点 MATLAB 语言简洁紧凑,使用方便灵活,库函数极其丰富,其语法规则与科技人员的思维和书写习惯相近,便于操作.MATLAB 程序书写形式自由,利用其丰富

图论与网络优化课程设计_Matlab实现

图论与网络优化课程设计 四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 摘要:网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。通过运用Matlab软件和NodeXL网络分析软件,计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 关键字:最近邻耦合网络;ER随机网络;WS小世界网络;BA无标度网络;Matlab;NodeXL。

四种基本网络(NCN、ER、WS、BA) 的构造及其性质比较 1.概述 1.网络科学的概述 网络科学(Network Science)是专门研究复杂网络系统的定性和定量规律的一门崭新的交叉科学,研究涉及到复杂网络的各种拓扑结构及其性质,与动力学特性(或功能)之间相互关系,包括时空斑图的涌现、动力学同步及其产生机制,网络上各种动力学行为和信息的传播、预测(搜索)与控制,以及工程实际所需的网络设计原理及其应用研究,其交叉研究内容十分广泛而丰富。网络科学中被广泛研究的基本网络主要有四种,即:规则网络之最近邻耦合网络(Nearest-neighbor coupled network),本文中简称NCN;ER随机网络G(N,p);WS小世界网络;BA无标度网络。本文着重研究这几种网络的构造算法程序。计算各种规模下(例如不同节点数、不同重连概率或者连边概率)各自的网络属性(包括边数、度分布、平均路径长度、聚类系数),给出图、表和图示,并进行比较和分析。 2.最近邻耦合网络的概述 如果在一个网络中,每一个节点只和它周围的邻居节点相连,那么就称该网络为最近邻耦合网络。这是一个得到大量研究的稀疏的规则网络模型。 常见的一种具有周期边界条件的最近邻耦合网络包含围成一个环的N个节点,其中每K个邻居节点相连,这里K是一个偶数。这类网络的一个重要特征个节点都与它左右各/2 就是网络的拓扑结构是由节点之间的相对位置决定的,随着节点位置的变化网络拓扑结构也可能发生切换。 NCN的Matlab实现: %function b = ncn(N,K) %此函数生成一个有N个节点,每个节点与它左右各K/2个节点都相连的最近邻耦合网络 %返回结果b为该最近邻耦合网络对应的邻接矩阵 function b = ncn(N,K) b=zeros(N); for i = 1:N for j = (i+1):(i+K/2) if j<=N b(i,j)=1; b(j,i)=1; else b(i,j-N)=1;

有趣的MATLAB 1.游戏程序

MATLAB游戏程序 目录 1.空格游戏 (2) 2.华容道 (3) 3.凑五子棋 (14) 4.2048 (19) 5.俄罗斯方块 (24)

1.空格游戏 function pintu1() A = gen(); G = [1 2 3;4 5 6;7 8 0]; drawmap(A); while 1 [xpos,ypos] = ginput(1); col = ceil(xpos); row = 3-ceil(ypos)+1; num = A(row,col); if row>1&A(row-1,col)==0 A(row-1,col) = num; A(row,col) = 0; end if row<3&A(row+1,col)==0 A(row+1,col) = num; A(row,col) = 0; end if col>1&A(row,col-1)==0 A(row,col-1) = num; A(row,col) = 0; end if col<3&A(row,col+1)==0 A(row,col+1) = num; A(row,col) = 0; end drawmap(A) zt = abs(A-G); if sum(zt(:))==0 msgbox('恭喜您成功完成!') break end end function drawmap(A) clf; hold on

line([0 3],[0 0],'linewidth',4); line([3 3],[0 3],'linewidth',4); line([0 3],[3 3],'linewidth',4); line([0 0],[0 3],'linewidth',4); for i = 1:3 for j = 1:3 drawrect([j-1 3-i],[j 3-i],[j 3-i+1],[j-1 3-i+1],'y',A(i,j)); end end axis equal axis off function drawrect(x1,x2,x3,x4,color,num) x = [x1(1) x2(1) x3(1) x4(1)]; y = [x1(2) x2(2) x3(2) x4(2)]; fill(x,y,color) if num==0 text(0.5*(x1(1)+x2(1)),0.5*(x1(2)+x4(2)),' ','fontsize',24) else text(0.5*(x1(1)+x2(1))-0.05,0.5*(x1(2)+x4(2)),num2str(num),'fontsize',24) end function y = gen() y = inf*ones(1,9); for i = 1:9 while 1 a = randint(1,1,9); if isempty(find(y==a)) y(i) = a; break end end end y = reshape(y,3,3); 2.华容道 function huarongdao() A = [2 1 1 3; 2 1 1 3; 4 6 6 5;

[教学]MATLAB小程序

[教学]MATLAB小程序 MATLAB小程序1-1.1 描绘出“点” %密度和穗花被害率x=[0,3,10,20,30,40]; y1=[0,0.273,2.260,2.550,2.920,3.950]; subplot(2,2,1); plot(x,y1); title(' 密度和穗花被害率'); xIabelC 头肝八2'); ylabel(' 穗花被害率%'); %密度和结实率x=[0,3,10,20,30,40]; y2=[94.4,93.2,92.1,91.5,89.9,87.9]; subplot(2,2,2); plot(x,y2); title(' 密度和结实率'); xIabelC 头/m^2'); ylabel(' 结实率%'); %密度和千粒重x=[0,3,10,20,30,40]; y3=[21.37,20.60,20.60,20.50,20.60,20.13]; subplot(2,2,3);

xIabelC 头/mV); ylabel(' 千重粒g'); %密度和减产率x=[0,3,10,20,30,40]; y4=[0,2.4,12.9,16.3,20.1,26.8]; subplot(2,2,4); plot(x,y4); title(' 密度和减产率'); xlabel(' 头/mV); ylabel(' 减产率%') %1-1.2 表2 稻纵卷叶螟与水稻作用的数据 %产量损失率: x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50]; y1=[0.73,1.11,2.2,3.37,5.05,6.78,7.16,9.39,14.11,20.06]; subplot(2,2,1); plot(x,y1); title(' 密度和减产率'); xIabelC 头/m^2'); ylabel(' 减产率%'); %卷叶率: x=[3.75,7.50,11.25,15.00,18.75,30.00,37.50,56.25,75.00,112. 50]; y2=[0.76,1.11,2.22,3.54,4.72,6.73,7.63,14.82,14.93,20.40]; subplot(2,2,2);

相关主题
文本预览
相关文档 最新文档