关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)

MATLAB

Content

Chapter 1 Introduction to MATLAB

1.变量、函数名命名规则

必须以字母开头,可以包含数字、字母、下划线

Chapter 2 Basic Knowledge of Programming

1.创建矩阵

 A = [1; 4; 7] % 列矩阵
 B = [1  4  7] % 行矩阵
 N = zeros(4)  % 全 0 矩阵 4 × 4
 X = ones(4)   % 全 1 矩阵 4 × 4
 Y = eye(4)	   % 单位矩阵 4 × 4
 Z = rand(3,4) % 随机矩阵 3 × 4 (每个数都在 0 到 1 之间)

 n = [1  3  4  6]
 D = diag(n)    % 生成对角矩阵,结果如下

n =

 1     3     4     6

D =

 1     0     0     0
 0     3     0     0
 0     0     4     0
 0     0     0     6

2.获取矩阵元素

X(2, 3)        % 获取第二行第三列元素
A([1 2], [2 3] % 获取矩阵 A 的一二行的二三列元素
Y(2, 3) = 3    % 给矩阵第二行第三列的元素赋值为 3

3.矩阵的合并

A = [1 2; 2 1]
B = [2 3; 3 2]
C = [A B]		% 行合并
D = [A; B]		% 列合并

结果
C =

 1     2     2     3
 2     1     3     2

D =

 1     2
 2     1
 2     3
 3     2

4.矩阵的算术运算

 X = [1 5 -2; 3 0 7]
 Y = [6 0 6; 2 2 1]
 Z = X + Y 		% 加法,对应元素相加
 A = X - Y
 B = X.*Y
 C = X./Y		% 右除 X 的元素除以 Y 的元素
 D = X.\Y		% 左除 Y 的元素除以 X 的元素

加法结果
Z =

 7     5     4
 5     2     8

5.线性代数中的矩阵运算

① 矩阵乘

注:第一个矩阵的列数和第二个矩阵的行数必须相同 如下不能计算 Y*X

X = [1 2 3;4 5 6; 6 1 1; 0 1 -3]
Y = [2 -2; 3 8; 7 4]
Z = X*Y

结果

Z =

29    26
65    56
22     0

-18 -4

② 矩阵除

D = A/B     % 右除
N = A\B    	% 左除

除法可以用求除数的逆阵与被除数矩阵相乘的方法替代,学过线性代数都应该知道,不再赘述

③ 矩阵转置

H = [1 2 3; 4 5 6]    
G = H'     % ' 为求转置符号

结果
G =

 1     4
 2     5
 3     6

④ 矩阵求逆
原理 : AB = BA = E

A = [1 0 1; 2 1 2; 0 4 6]
B = inv(A)  % B 为 A 的逆阵

结果
B =

   -0.3333    0.6667   -0.1667
   -2.0000    1.0000         0
    1.3333   -0.6667    0.1667

再计算 A*B 得以下结果

1.0000         0         0
     0    1.0000         0
     0         0    1.0000

6.字符串的运算

S1 = 'Go home'
S2 = 'It''s time for dinner' 	% 注意这句,字符串里面有 ' 的话,要多加一 '
S3 = [S1 '.' S2]

结果
S3 =

'Go home.It's time for dinner'
size(S1)		% 结果为  1   7 (结果展示维度)
length(S1)      % 结果为 7		(结果展示字符或元素个数

补充 : 冒号运算符 两边有数字代表从左边数字到右边数字的范围,如果只有冒号则代表全部该有的有效范围
findstr(S,‘substring’) 返回字串 ‘substring’ 在 S 中的所有开始位置

Chapter 3 MATLAB Numeric Computation

1.多项式的创建、求值和求根

① 创建

T = [1 3 -15 -2 9]
F = poly2sym(T)

结果
F =

x^4 + 3x^3 - 15x^2 - 2*x + 9

② 求值

polyval(T,0)		% 注意 当后面给出的变量是矩阵时,结果也为矩阵
					% 且调用函数变为 polyvalm(T,X), X为矩阵

ans =

 9

③ 求根

p = [1 3 -12 -2 8]
roots (p)

结果

  -5.1833
  2.1706
  -0.8369
  0.8496

2.插值的常用方法

 x = 0:10; y = cos(x);  % 已知数据点
xi = 0:.25: 10;         % 待插入数据点的自变量值
y0 = cos(xi);           % 待插入数据点的自变量对应的真实值
y1 = interp1(x,y,xi);   % 缺省为线性插值
y2 = interp1(x,y,xi,'PCHIP');  % 三次方程式插值
y3 = interp1(x,y,xi,'spline');  % 三次样条插值
plot(xi, y0, 'go-', xi, y1, 'r*-', xi, y2, 'b-.', xi, y3, 'kv-'); % 图形显示

结果
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)

3.多项式拟合

x = [2 3 4 5 7 8 10 11 14 15 16 18 19];
    y = [106.42 108.26 109.58 109.5 110 109.93 110.49 110.59 110.6 110.9 110.76 111 111.2];
    v = polyfit(x, y, 3); % v 是拟合多项式的系数向量,第三个数字代表几次方拟合
    t = 1:0.5:19;   % 待测试数据点,用来画拟合曲线
    u = polyval(v,t); % 待测试数据点对应的多项式值,用来画拟合曲线
    plot(t, u, x, y, '*')   %图形显示

三次拟合的图像
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)

4.数值微分

A = [2,4,5; -1, 0, 2; 9,3,4];
D = diff(A)		% 列后面的数对齐减前面的数

结果
D =

-3    -4    -3
10     3     2

5.数值积分

Question:求 sin(x) 在 [0, pi] 上的数值积分
矩形积分

x = linspace(0,pi,100);
     y =sin(x);
     T = cumsum(y)*pi/(100-1);
     I = T(100)

结果
I =

1.9998

梯形积分

x = linspace(0,pi,100);
     y =sin(x);
     t = trapz(x,y)

结果
t =

1.9998

Chapter 4 Structure Array and Cell Array

1.结构数组的创建

>> student.number='20050731001';
>> student.name='Jack';
>> student(2).number='20050731002';
>> student(2).name ='Lucy';

或者用 struct 函数创建。

>> student = struct('number',{ '001', '002'},'name',{ 'Jack', 'Lucy'});

2.结构数组的操作

>> student(1).subject=[]      %添加 subject 域并赋予空值
>> student(1).sorce=[]
>> student
>> fieldnames(student)
>> getfield(student,{2},'name')
>> student=rmfield(student, 'subject')    %删除 subject 域
>> student=setfield(student,{1},'sorce',90);
>> student(2).sorce=88;    %比较和上一条语句是否效果一样

3.细胞数组的创建

>> A={'How are you!',ones(3);[1 2;3 4],{'cell'}};   %直接创建
>> B(1,1)={'Hello world'};       %由各个细胞元素创建
>>> B(1,2)={magic(3)};
>> B(2,1)={[ 1 2 3 4]};

或者用 cell 函数先创建空的细胞数组,然后再给各个元素赋值。

>> C=cell(1,2);    %创建 1×2 的细胞数组
>> C(1,1)={'Hello world'};
>> C(1,2)={magic(3)};
>> C(1,3)={[ 1 2 3 4]};

4.细胞数组的操作

>> ans1=A(1,1)
>> ans2=A{1,1} 			%注意圆括号和花括号的区别,ans1 和 ans2 的数据类型
>> whos ans1 ans2
>> elldisp(A)         	%显示细胞数组的所有元素
>> a1=A{2,1}(1,2)       %取出 A 的第 2 行第 1 列细胞元素的矩阵第 1 行第 2 列内容
>> [a2 a3]=deal(A{1:2}) %取出 A 的第 1 和第 2 个细胞元素的内容赋给 a2、a3

Chapter 5 MATLAB Symbol Computation

1.符号变量和表达式的定义

syms x y	% 定义符号变量
y = str2sym('sin(x) + y + cos(x)')	% 定义表达式

2.利用符号运算求极限

limit(F, x, a) %返回符号对象 F 当 x→a 时的极限
limit(F, a) %返回符号对象 F 当独立变量*→a 时的极限
limit(F) %返回符号对象 F 当独立变量→0(a=0)时的极限
limit(F, x, a, ’right’) %返回符号对象 F 当 x→a 时的右极限
limit(F, x, a, ’left’) %返回符号对象 F 当 x→a 时的左极限

y = str2sym('sin(x)/x');
limit(y)   % x → 0 的极限,结果为 1

3.利用符号运算求微分

diff(F) %求符号对象 F 关于默认变量的微分
diff(F, v) %求符号对象 F 关于指定变量 v 的微分
diff(F, n) %求符号对象 F 关于默认变量的 n 次微分,n 为自然数 1、2、3…
diff(F, v, n) %求符号对象 F 关于指定变量 v 的 n 次微分

y = str2sym('sin(x)')
y1 = diff(y)

结果
y1 =

cos(x)

4.利用符号运算求积分

int(F) %求符号对象 F 关于默认变量的不定积分
int(F, v) %求符号对象 F 关于指定变量 v 的不定积分
int(F, a, b) %求符号对象 F 关于默认变量的从 a 到 b 的定积分
int(F, v, a, b) %求符号对象 F 关于指定变量 v 的从 a 到 b 的定积分

y = str2sym('sin(x)');
D = int(y,0,pi)		% 定积分

结果
D =

2

Chapter 6 Programming with MATLAB

1.函数的定义

以下是有效的函数定义方式
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)

2.选择和循环结构

选择

if
...
else
...
end

switch 变量
case 变量取值
...
case 变量取值
...
end

循环

for n = 1 : 10
...
end

for n = 10 : -1: 5 	% 很好理解
...
end

while i < 100		% 判断语句
...
end

3.输入和输出

input('请输入:')		% 输入
fprintf('结果是:%s\n',str)	%输出

4.对于给定问题写函数

一个棋盘,从第一个格子开始,第一个格子放一粒米,依次放后面的格子,后一格的数量为前一格的两倍,求一共需要多少粒米?

function sum = func
i = 1;
sum = 0;
while i <= 64
    sum = sum + 2^i;
    i = i + 1;
end

Chapter 7 MATLAB Visualization

1.二维图形绘制

1.plot

x = [-2*pi:0.1:2*pi];
y1 = sin(x); y2 = cos(x);
plot(x, y1, 'g-*', x, y2, 'r-+');
xlabel('x'); ylabel('sin(x)&cos(x)')
hl = legend('sin(x)', 'cos(x)');
set(hl, 'Orientation', 'vertical');
grid on;

运行结果
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)
2.hist

 attri = rand(1,100)*99+1;
hist(attri,10); 
xlabel('random number'); 
ylabel('Count');

运行结果
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)
3.pie chart

consumption = [589, 200, 654, 245];
explode = [0,0,0,0];
labels = {'1st quarter ', '2nd quarter', '3rd quarter', '4th quarter'};
pie(consumption, explode, labels);

运行结果
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)
4.subplot

subplot(2,2,1); 	% 在一个界面里的四分之一的第一个区域画图
plot(x,sin(x));
xlabel('x'); 
ylabel('y');
title('sin(x)'); 

运行结果
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)

2.三维曲线及曲面的绘制

1.plot3

 t = 0:0.05:20;
x = sin(t); y = cos(t); 
plot3(x,y,t,'*');		// plot3 画曲线
grid
text(0,0,0,'0');
title('Three dimension');
xlabel('sin(t)'),ylabel('cos(t)'),zlabel('t');

运行结果
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)
2.meshgrid 和 surf

[X,Y] = meshgrid(1:0.5:10,1:20); 
Z = sin(X) + cos(Y); 
surf(X,Y,Z);
xlabel('x'), ylabel('y'), zlabel('z');
title('SURF') 

运行结果:
关于 MATLAB 你首先要会的基础(权且可当做期末复习备考)

Chapter 8 Simulink

一会儿给您上

上一篇:【C++ Primer(5th Edition) Exercise】练习程序 - Chapter 9(第九章)(1-2)


下一篇:SSH2免密码登录OpenSSH