%清空工作区
clc
clear all
close all
%%
A=1; %一个数
E3=[1,0,0;0,1,0;0,0,1]; %一个矩阵,用[]表示,,一行从左向右;换行
F={A,E3;magic(3),0}; %一个数胞,用{}表示,,一行从左向右;换行
E33=E3(2,1); %引用矩阵(行,列)的元素
F2=F{2,1}; %引用数胞或封装{行,列}的元素
F21=max(F2,[],"all"); %筛选出矩阵最大值,最小值为min
F22=sum(F2,"all"); %矩阵元素之和
N=randi([10,20],1,16); %生成16个10到20的随机数
N1=reshape(N,[4,4]); %将矩阵变形,此处为4行4列
M=randn(1,5); %生成5个以单位正态分布的数
O=1:1:10; %生成1到10,间隔1的数
O1=O'; %'转置矩阵
P=inv(E3); %逆矩阵
%%
%运算
A1=3; %举例数据
A2=-9;
A3=[4,5,6;7,8,9;1,2,3];
A4=[1,4,6;4,7,8;9,3,1];
A5=[1,2,3];
A6=1+3i;
B0=sind(90)-sin(pi/2); %角度制与弧度制三角函数
B1=(A1+A2)*A1/A2-A1^2+exp(1); %加减乘除指数
B2=2*A3+4*A4; %同大小矩阵运算
B3=sin(A5)./A5; %行、列向量相互运算时,第一个加.表示按元素顺序
B4=norm(A5); %求向量模
B5=abs(A2); %求绝对值
B6=A3*A5'; %矩阵相乘,先行长=后列长,结果=先行数后列数
B7=real(A6); %复数实部
B8=imag(A6); %复数虚部
B9=conj(A6); %复数的共轭复数
Oula=rotx(30)*roty(45)*rotz(20); %位姿变换矩阵
%微积分
syms t0
a1=5;
a2=9;
a3=8;
b1=double(int(a1,t0,0,2)); %定积分0到2
u1=a1*t0^3+a2*t0^2+a3*t0;
b2=int(u1,t0); %不定积分
b3=double(int(u1,t0,realmax,realmin)); %反常积分,realmax表示无穷大
u2=a1*t0^5+a2*t0^3+a3;
b4=diff(u2,t0,4); %求导,4阶
%解任意方程组(多元非线性)
syms x y z %定义求解量
f1=sym(2*x+3*y+z==1); %列方程
f2=sym(3*x+7*y-2*z==6);
f3=sym(x^2-exp(y)+z==0);
S=solve(f1,f2,f3,x,y,z); %解方程
x1=double(S.x); %提取结果
y1=double(S.y);
z1=double(S.z);
%作者yun_55 UID182829699,所有软件媒体同名,转载请标明出处
%进阶:解任意方程组,防无解停止运行,且无解归零
syms x2 y2 z2
f4=sym(2*x2+3*y2+z2==1);
f5=sym(3*x2+7*y2-2*z2==6);
f6=sym(-999*x2^2-exp(y2)-z2^8==0);
S1=solve(f4,f5,f6,x2,y2,z2);
if isempty(S1.x2) %无解检测
x3=0;
y3=0;
z3=0;
else
x3=double(S1.x2);
y3=double(S1.y2);
z3=double(S1.z2);
end
%%
%循环数据结构
%for循环:例:给定一段时间,x4 y4是随时间变化的函数,a b是x4 y4约束的变量,求出a b在该时间段内的值
t=1:0.1:30; %给出时间段及分隔
for i=1:1:291
t1=t(1,i); %此时时间(可以理解成这一帧)
x4=20*t1; %此时的x4 y4
y4=3*t1^2;
syms a b;
f7=sym(x4+y4-a+b==0);
f8=sym(0.5*x4+2*y4-(0.8*a+1.3*b)==0);
s=solve(f7,f8,a,b); %求解此时的a b
u=s.a;
v=s.b;
q(1,i)=u; %汇总结果
o(1,i)=v;
end
j=double(q);
k=double(o);
%while条件循环:例:2^i的前64项和
i1=0;v1=2;
while i1<=63
d(1,i1+1)=v1^i;
if i1==0 %条件检测
a1(1,i1+1)=d(1,i1+1);
else
a1(1,i1+1)=a1(1,i1)+d(1,i1+1);
end
i1=i1+1 ; %迭代
end
k1=a1(1,i1);
%elseif多条件判断 else全不满足
n4=randn(1,1);
if n4>=0.8
k3=1;
elseif n4>=0.5
k3=0.5;
elseif n4>=0.1
k3=0.3;
else
k3=0.1;
end
%continue满足判断条件后进入下一个循环
for i2=1:64
n1(1,i2)=randn(1,1);
n2(1,i2)=randn(1,1);
end
for i3=1:64
if n1(1,i3)-n2(1,i3)>=0
if n1(1,i3)-n2(1,i3)>=0.2
if n1(1,i3)-n2(1,i3)>=0.5
n3(1,i3)=n1(1,i3)+n2(1,i3);
else
n3(1,i3)=0;
continue
end
else
n3(1,i3)=5;
continue
end
else
n3(1,i3)=8;
continue
end
end
%%
%画二维曲线图 用的for循环例子数据
figure(1)
grid on
subplot(1,2,1);
plot(t,j,'k','LineWidth',2); %线图
xlabel('t(s)'); %xy轴标识
ylabel('j(mm)');
legend('j'); %标注
subplot(1,2,2);
plot(t,k,'.g', 'MarkerSize',3) %点图
xlabel('t(s)');
ylabel('k(mm)');
legend('k');
%画三维网格图 z是x y的函数,先对x y网格划分
x6=-100:1:100;
y6=-100:1:100;
[X6,Y6]=meshgrid(x6,y6);
Z6=abs(X6)+50*sin(0.1*Y6);
figure(2)
hold on
view([1,1,1])
mesh(X6,Y6,Z6)
colormap("winter")
figure(3)
hold on
view([1,1,1])
surf(X6,Y6,Z6)
colormap("hot")
%三维点图
jd=0:10:360;
jy=0:10:360;
R=0:100:200;
for i7=1:37
for i8=1:37
for i9=1:2
jdd=jd(1,i7);
jyd=jy(1,i8);
Rd=R(1,i9);
x7(i7,i8,i9)=Rd*cosd(jdd)*cosd(jyd);
y7(i7,i8,i9)=Rd*sind(jdd)*cosd(jyd);
z7(i7,i8,i9)=Rd*sind(jyd);
end
end
end
figure(4)
hold on
view([1,1,1]);%视角
axis equal; %等分坐标系
for i4=1:1:37%画点
for i5=1:1:37
for i6=1:1:2
plot3(x7(i4,i5,i6),y7(i4,i5,i6),z7(i4,i5,i6),'.g', 'MarkerSize', 3)
end
end
end
xlim([ -250,250 ]); %视野范围
ylim([ -250,250 ]);
zlim([ -250,250 ]);
%%
%系统稳定性及绘图
%求系统空间状态模型
G2=zpk([-3],[-1,-(1/3),-(1/15)],1); %零极点增益模型
G22=tf(G2);%2、传递函数
a22=G22.Numerator;
b22=G22.Denominator;
a23=a22{1,1};
b23=b22{1,1};
[A8,B8,C2,D2]=tf2ss(a23,b23);
S2pace=ss(A8,B8,C2,D2);%2、空间状态模型
%作者yun_55 UID182829699,所有软件媒体同名,转载请标明出处
%画系统响应
a11=tf([1,0.5],[1,0.1]);
bz=zpk([],[0,-2,-10],20);
b11=tf(bz);
u11=series(a11,b11);
G23=minreal(u11/(1+u11));%1、系统闭环传递函数
figure(5)
hold on
step(G23,30,'g')%2、单位阶跃响应,仿真时间30s
xlabel('time/s')
ylabel('value')
legend('单位阶跃响应')
[f11,f21]=gensig('square',30,150);%方波,周期30s,仿真时间150s
figure(6)
hold on
lsim(G23,'r',f11,f21)%3、方波响应
xlabel('time/s')
ylabel('value')
legend('方波响应')
%画bode图 nyquest图 打开系统分析器
G25=zpk([],[0,-1.2,-0.1],1);
[a211,a221,a231,a241]=margin(G25);%a211为幅值裕度,a221为相位裕度
figure(7)
hold on
subplot(2,1,1),bode(G25);
subplot(2,1,2),nyquist(G25);
ltiview(G25)