快速掌握MATLAB基础功能:程序示例速成

%清空工作区

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)

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空