MATLAB程序设计作业

MATLAB程序设计作业
MATLAB程序设计作业

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

error_2=error_1; error_1=error(k); end figure(1);

plot(time,rin,'b',time,yout,'r'); xlabel('time(s)'),ylabel('rin,yout'); figure(2); plot(time,error,'r')

xlabel('time(s)');ylabel('error');

0.1

0.2

0.3

0.4

0.50.6

0.7

0.8

0.9

1

0.20.40.60.81

1.21.41.6time(s)

r i n ,y o u t

00.10.20.30.4

0.50.60.70.80.91

-0.6

-0.4-0.200.20.4

0.60.81time(s)

e r r o r

输入输出图波形 增量值波形

相关主题
相关文档
最新文档