matlab程序设计作业

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Matlab程序设计作业

姓名:

学号:

专业:

《MATLAB程序设计》作业

1、考虑如下x-y 一组实验数据:

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

y=[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2]

分别绘出plot的原始数据、一次拟合曲线和三次拟合曲线,给出MATLAB代码和运行结果。

12345678910

原始曲线

1

2

3

4

5

6

7

8

9

10

22.533.544.555.566.5

7

一次拟合

1

2345678910

三次拟合

x=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

y=[1.2, 3, 4, 4, 5, 4.7, 5, 5.2, 6, 7.2];

figure;

plot(x,y)

p1=polyfit(x,y,1);

y1=polyval(p1,x);

figure;

plot(x,y1)

p2=polyfit(x,y,3);

y2=polyval(p2,x);

figure;

plot(x,y2)

2、在[0,3π]区间,绘制y=sin(x)曲线(要求消去负半波,即(π,2π)区间内的函数值置零),求出曲线y的平均值,以及y的最大值及其最大值的位置。给出执行代码和运行结果。

x=0:pi/1000:3*pi;

y=sin(x);

y1=(y>=0).*y; %消去负半波figure(1);

plot(x,y1,'b');

a=mean(y1) %求出y1的平均值

b=max(y1) %求出y1的最大值b,以及最大值在矩阵中的位置;

d=x(find(y1==b))

>> ex1

a =

0.4243

b =

1

d =

1.5708 7.8540

>>

1

2

3

4

5

6

7

8

9

10

00.10.20.30.40.50.60.70.80.9

1

3、给出函数z=x^2+y^2的三维曲面的绘制结果和MATLAB 代码,

x=-3:0.1:3; y=-4:0.1:4;

[x,y]=meshgrid(x,y); z=x.^2+y.^2; mesh(x,y,z);

4、将一幅彩色图像文件转换为灰度图像,存储并显示转换后的灰度图像,给出运行结果和执行代码。

x=imread('hehua.jpg');

x=rgb2gray(x);

figure(1);

imshow(x);

h=figure(1);

saveas(h,'gray.jpg');

原图

处理后图像

5、结合自身研究方向,自拟一题目,采用MATLAB语言实现一具有完整功能的算法,给出运行结果和执行代码。

题目:用遗传算法找函数的最大值 .

function main()

clear

clc

popsize = 100; %种群大小

chromlength = 10; %二进制编码长度

pc = 0.6; %交叉概率

pm = 0.001; %变异概率

pop = initpop(popsize,chromlength); %初始种群

for i=1:100

[objvalue] = cal_objvalue(pop); %计算适应度值(函数值)

fitvalue = objvalue;

[newpop] = selection(pop,fitvalue); %选择操作

[newpop] = crossover(newpop,pc); %交叉操作

[newpop] = mutation(newpop,pm); %变异操作

pop = newpop; %更新种群

[bestindividual,bestfit]=best(pop,fitvalue);%寻找最优解

x2 = binary2decimal(bestindividual);

x1 = binary2decimal(newpop);

[y1] = cal_objvalue(newpop);

if mod(i,10)==0

figure;

fplot('10*sin(5*x)+7*abs(x-5)+10',[0 10]);

hold on;

title(['迭代次数为 n=' num2str(i)]);

plot(x1,y1,'*');

end

end

fprintf('the best X is --->>%5.2f\n',x2);

fprintf('the best Y is --->>%5.2f\n',bestfit);

迭代次数为 n=10

012345678910

012345678910

迭代次数为 n=30

012345678910

相关文档
最新文档