第二章 MATLAB语言程序设计基础

Basic of MATLAB Laguage

October , 2019

一、变量与数据结构等
1、MATLAB语言的变量名规则
① 由一个字母引导,后面可以为其他字符
② 区分大小写 Abc ≠ ABc
③ 有效 MYvar12, MY_Var12 和 MyVar12_
④ 错误的变量名 12MyVar, _MyVar12, MyVar-
2、MATLAB的保留常量
eps, i, j, pi, NaN, Inf, i=sqrt(-1) ,lastwarn, lasterr
3、符号型,sym(A),常用于公式推导和求解析解;
符号变量声明:syms  var_list  var_props;显示符号变量的任何精度:vpa(A),vpa(A,n)。
正确输入法:

二、矩阵相关
4、动态定维
A=[1,2,3;4,5,6;7,8,0];
A=[[A;[1,2,3]],[1;2;3;4]]

5、用不同的步距生成  间的向量
v1=0:0.2:pi
v1a=linspace(0,pi,50)
v2=0:-0.1:pi
v3=0:pi
v4=pi:-1:0
v5=0:-1:pi

6、子矩阵提取例子
A=[1,2,3;4,5,6;7,8,0];
B1=A(1:2:end,:)
B2=A([3,2,1],[2 3])
B3=A(:,end:-1:1)

7、课堂练习及解答

M=[1:9;3:2:19;0:5:40];

C=M(:,7:-2:3);
C=[M(:,end),C];

D=M(2,:);
D=[D(:,1:3);D(:,4:6);D(:,7:9)];

E=M';
E=E(2:2:end,:)

8、矩阵转置Hermite
B=[1+9i,2+8i,3+7i;4+6i,5+5i,6+4i;7+3i,8+2i 1i];
C=B'
C=B.'

9、矩阵除法的例子
A=[1,2,3,4;7,9,5,6;1,1,9,2]
B=[2;5;1]
X=A\B

10、矩阵的幂指数
A=[1,2,3;4,5,6;7,8,9]
C=A^(1/3),e=norm(A-C^3)

j1=exp(sqrt(-1)*2*pi/3);
A1=C*j1,A2=C*j1^2,e1=norm(A-A1^3),e2=norm(A-A2^3)


11、点运算:
绘图
x=-5:0.01:5;
y=x.^2;
plot(x,y)

12、符号表达式化简:
syms s z;
P=(s+3)^2*(s^2+3*s+2)*(s^3+12*s^2+48*s+64);
P1=simplify(subs(P,s,(z-1)/(z+1)))
latex(P1)

13、取整运算
A=[-0.2765,0.5772,1.4597,2.1091,1.191,-1.6187];
v1=floor(A)
v2=ceil(A)
v3=round(A)
v4=fix(A)

14、逻辑与比较运算实例:
A=[1,2,3;4,5,6;7,8,0];
i=find(A>=5)’;
[i,j]=find(A>=5);
a1=all(A>=5),a2=any(A)=5);

15、for循环与while例子

s1=0;
for i=1:100,s1=s1+i;end,s1
s2=0;i=1;
while(i<100),s2=s2+i;i=i+1;end
s2
更简单 sum(1:100)

16、课堂练习解答


%2-20 课堂练习
s=0;
for i=1:100000,s=s+1/2^i+1/3^i;
end;

更简洁的求解:

i=1:100000;
s=sum(1./2.^i+1./3.^i);

17、综合练习解答


%矩阵替换的课堂练习
M = ones(7,8)
for c = 1:8
for r = 1:7

if r == c
M(r,c) = 2;
elseif ((r-c) == 1)||((r-c)==-1)
M(r,c) = -1;
else
M(r,c) = 0;
end

end
end
M

%求根课堂练习的补充(讲解求根的二分法)
x=-5:0.1:5;
y=x.^3-2.*x-5;
plot(x,y,'linewidth',3);

%求根的课堂练习解答
a= 0; fa = -Inf;
b = 3; fb = Inf;
while b-a > eps*b
x = (a+b)/2;
fx = x^3-2*x-5;
if fx == 0
break
elseif sign(fx) == sign(fa)
a = x; fa = fx;
else
b = x; fb = fx;
end
end
x

15、m函数01

例2-22函数的m文件内容

findsum.m文件下载(请点击右键选择连接另存为)

16、m函数02

例2-25所编写函数

17、M函数部分作业

第一题参考程序(右键链接另存为下载) 第二题参考程序(右键链接另存为下载)

18、面向对象的程序设计基础
Helloword的课上例子程序(右键链接另存为下载)
控制绘图GUI课上例子程序(右键链接另存为下载),

六、课程大作业
19、大作业要求(总成绩的20%,最晚考后2周内答辩上交,考试前答辩上交的适当加分)


大作业参考程序(右键下载后解压压缩包)

七、二维绘图
% plot绘图,不同步距的选取
x=[-pi:0.05:pi];
y=sin(tan(x))-tan(sin(x));
plot(x,y)

x=[-pi:0.00001:pi];
x=[-pi:0.05:-1.8,-1.801:0.0001:-1.2,-1.2:0.05:1.2,1.2:0.0001:1.8,1.81:0.05:pi]

 

% 分段函数绘图(饱和函数)
x=[-2:0.02:2];
y=1.1*sign(x).*(abs(x)>1.1)+x.*(abs(x)<=1.1);
plot(x,y)

%plotyy 双坐标轴绘图
x=0:0.1:2*pi;
y1=sin(x);
y2=0.01*cos(x);
plot(x,y1,x,y2,'--')
plotyy(x,y1,x,y2)

%极坐标绘图
theta=0:0.01:6*pi;
rho=5*sin(4*theta/3);
polarplot(theta,rho)

rho=5*sin(theta/3);
polarplot(theta,rho)

%subplot分区域绘图,以及其他绘图指令
t=0:.2:2*pi;
y=sin(t);
subplot(2,2,1),stairs(t,y)
subplot(2,2,2),stem(t,y)
subplot(2,2,3),bar(t,y)
subplot(2,2,4),semilogx(t,y)

%隐函数绘图
syms x y
h=fimplicit(x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y));
set(h,'Color','b');

h=fimplicit(x^2*sin(x+y^2)+y^2*exp(x+y)+5*cos(x^2+y),[-10 10]);
set(h,'color','b')

%对excel表的读写
X=xlsread('census.xls','B5:C22');
t=X(:,1);p=X(:,2);plot(t,p);
xlswrite(‘uu.xls’,X);
census.xls文件下载