2024年6月2日发(作者:)

Matlab基本算术命令:

数组的计算:

x=[3,5,11,17,8,9,31,40,12];

y=x+16 //数组里每个数加16

y=sqrt(x) //数组每个数开平方

n=length(x) //数组里偶数加2

for i=1:n

if mod(x(i),2)==0

x(i)=x(i)+2

end

end

sum(x(1:2:length(x))) //数组里系数为奇数的数的和

========================================

数组的阶乘运算须知:

当x是一组数时,如:x=1:0.1:4

此时:y=x^3、y=exp(x*x) 会出错

应为:y=x.^3、y=exp(x.*x) 用“点乘”

========================================

数组操作命令:

>> x=[3,1,5,7,9,2,6]; 定义一个数组

>> x(3) 该数组的第三个数是?

>> x(1:7) (显示该数组第1到第7个数)

>> x(1:end-1) 示该数组1~(7-1)个数

>> x(6:-2:1) 第六个数开始,从后往前隔着取数

>> sum(x) (数组内所有数求和)

========================================

矩阵命令:

>> A = [ 1 2 3; 3 4 5; 6 7 8] 按行写3X3矩阵

>> B = [ [1 2 3]' [2 4 7]' [3 5 8]'] 按列写3X3矩阵

>> B = zeros (m,n) m X n零矩阵

>> E = ones (m, n) m X n单位矩阵

>> N = rand(m, n) 随即矩阵

>> A' 矩阵转置

其他矩阵操作命令见

"

第一次作业

"

=====================================

控制系统模型相关命令:

用ode45 解常微分方程:

例题:求解dy/dt = -2y/t + 4t 在区间[1,3]的解

f=-2.*y./t+4*t //定义函数

[T,Y]=ode45(f,[1 3],2); //调用ode45命令

//[1,3]为区间,2为初值

Y_analysis = T.^2 + 1./(T.^2); //

size(T);

size(Y);

size(Y_analysis);

plot(T,Y,'r',T,Y_analysis,'g')

========================================

传函模型:

num1=[1]

den1=[1000 50]

sys=tf(num1,den1)

========================================

分子或分母由多个多项式乘积时的传函模型:

例如:G(s) = 4(s+2)(s2+6s+6)/[s(s+1)3(s3+3s2+2s+5)]

用conv命令处理:

num = 4*conv([1 2],[1 6 6])

den = conv([1 0],conv([1 1],conv([1 1],conv([1 1],[1 3 2 5]))))

Sys=tf(num,den)

或者另一种方法:

例如 1/(((s+1)^2+s+2)^3+1) ?

s=tf('s'); //定义算子

G=1/(((s+1)^2+s+2)^3+1)

可以得出结果

========================================

零极点模型:

>> h=zpk({[-3]},{[-1 -2 -5]},6)

Zero/pole/gain:

6 (s+3)

-----------------

(s+1) (s+2) (s+5)

========================================

状态空间模型:

ss

用法略

三种模型之间的转换: