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代码和运行结果。
代码如下:
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(x,y);
title('原始数据');
p=polyfit(x,y,1);
q=polyval(p,x);
figure,plot(x,q);
title('一次拟合');
p=polyfit(x,y,2);
q=polyval(p,x);
figure,plot(x,q);
title('二次拟合');
运行结果如下:
1
2
3
4
5
6
7
8
9
10
12
3
4
5
6
7
8
原始数据
123
456789
102
2.5
3
3.54
4.5
55.56
6.57一次拟合
123456789
101
2
3
4
5
6
7
二次拟合
2、在[0,3π]区间,绘制y=sin(x)曲线(要求消去负半波,即(π,2π)区间内的函数值置零),求出曲线y 的平均值,以及y 的最大值及其最大值的位置。给出执行代码和运行结果。
代码如下: clear clc
x=(0:0.01:3*pi); y=sin(x); plot(x,y); y1=(y>=0).*y; figure,plot(x,y1);
p=mean(y1); [max_p,n]=max(y1); disp('均值:'); disp(p); disp('最大值:'); disp(max_p); disp('最大值位置:'); disp(n);
运行结果如下:
1
2
3
4
5
6
7
8
9
10
-1-0.8-0.6-0.4-0.200.20.40.60.810
1
2
3
4
5
6
7
8
9
10
00.10.20.30.40.50.60.70.80.91
3、给出函数z=x^2+y^2的三维曲面的绘制结果和MATLAB 代码
clear clc
t=[-5:0.1:5];
[x,y]=meshgrid(t); z=x.^2+y.^2; mesh(x,y,z);
-5
5
-5
5
010203040
50
4、将一幅彩色图像文件转换为灰度图像,存储并显示转换后的灰度图像,给出运行结果和执行代码。
x=imread('C:\Users\dell\Desktop\扫描材料1\张仲瑾照片.jpg'); figure(1); imshow(x); x=rgb2gray(x); figure(2); imshow(x); h=figure(2);
saveas(h,'gray.jpg');
保存的图像
5、结合自身研究方向,自拟一题目,采用MATLAB语言实现一具有完整功能的算法,给出运行结果和执行代码。
题目:增量式PID控制算法仿真
clear all
clc
ts=0.001;
sys=tf(50,[0.125,7, 0]); %传递函数
dsys=c2d(sys,ts,'z'); %离散化
[num,den]=tfdata(dsys,'v'); %获得分子分母矩阵
u_1=0.0;u_2=0.0;
y_1=0.0;y_2=0.0;
x=[0,0,0]';
error_1=0;
error_2=0;
for k=1:1:1000
time(k)=k*ts;
S=1;
if S==1
kp=5;ki=0.2;kd=6.5;
% kp=10;ki=0.1;kd=15;
rin(k)=1; %Step Signal elseif S==2
kp=10;ki=0.1;kd=15; %Sine Signal
rin(k)=0.5*sin(2*pi*k*ts);
end
du(k)=kp*x(1)+kd*x(2)+ki*x(3); %PID Controller
u(k)=u_1+du(k);
%Restricting the output of controller
if u(k)>=5
u(k)=5;
end
if u(k)<=-5
u(k)=-5;
end
%Linear model
yout(k)=-den(2)*y_1-den(3)*y_2+num(2)*u_1+num(3)*u_2;
error(k)=rin(k)-yout(k);
%Return of parameters
u_2=u_1;u_1=u(k);
y_2=y_1;y_1=yout(k);
x(1)=error(k)-error_1; %Calculating P
x(2)=error(k)-2*error_1+error_2; %Calculating D
x(3)=error(k); %Calculating I