matlab程序设计作业
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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