參考博客
1)Matlab基礎(chǔ)知識(shí)
https://blog.csdn.net/weixin_44378835/article/details/104499450
(2)Matlab矩陣處理
https://blog.csdn.net/weixin_44378835/article/details/104499754
(3)Matlab程序流程控制
https://blog.csdn.net/weixin_44378835/article/details/104499474
https://blog.csdn.net/weixin_44378835/article/details/104519190
(4)Matlab繪圖
https://blog.csdn.net/weixin_44378835/article/details/104499702
https://blog.csdn.net/weixin_44378835/article/details/104535084
(5)數(shù)據(jù)分析與多項(xiàng)式計(jì)算
https://blog.csdn.net/weixin_44378835/article/details/104499775
(6)數(shù)值微積分與方程求解
https://blog.csdn.net/weixin_44378835/article/details/104499607
(7)符號(hào)計(jì)算
https://blog.csdn.net/weixin_44378835/article/details/104553728
(8)Simulink系統(tǒng)仿真
https://blog.csdn.net/weixin_44378835/article/details/104499557
(9)文件操作
https://blog.csdn.net/weixin_44378835/article/details/104499643
Matlab基礎(chǔ)
Matlab如果沒(méi)有定義變量名, 系統(tǒng)將計(jì)算結(jié)果暫存在ans臨時(shí)變量中.
優(yōu)先級(jí): 表達(dá)式從左向右運(yùn)算, 指數(shù)運(yùn)算優(yōu)先級(jí)最高, 乘除次之
(help precedence查看優(yōu)先級(jí))
常用操作命令
clc 清空命令窗口
diary 日志文件命名
who 列出工作空間的變量
save my_var.mat % 保存工作區(qū)變量
load my_var.mat % 加載文件中變量到工作區(qū)
運(yùn)算符號(hào)
+ - * / \ ^ ' % 加 減 矩陣乘法 右除 左除 次方 矩陣共軛轉(zhuǎn)置
.* ./ \. .^ .' % 數(shù)組乘法 數(shù)組右除 數(shù)組左除 數(shù)組次方 矩陣轉(zhuǎn)置
/:右除。a/b表示矩陣a乘以矩陣b的逆嫩码。
\:左除炼蛤。a\b表示矩陣a的逆乘以b
./:右除。a./b表示矩陣a中的每個(gè)元素除以矩陣b的對(duì)應(yīng)的元素闰歪。
.\:左除。a.\b表示矩陣b中的每個(gè)元素除以矩陣a的對(duì)應(yīng)的元素。
RAND()*10 rand()是得到1個(gè)0~1之間的隨機(jī)小數(shù),*10以后就是0~10之間的小數(shù)round(rand()*10,0)把0~10之間的小數(shù)四舍五入取0位小數(shù)(即整數(shù))得到0~10之間的整數(shù)ROUND(RAND()*3,0)也是一樣的道理,rand(3)是指3*3的矩陣,矩陣的每個(gè)值時(shí)從0到1的隨機(jī)數(shù)
>> a = round(rand(3) * 10)
a =
8 9 3
9 6 5
1 1 10
>> b = magic(3) % 定義矩陣a和矩陣b
b =
8 1 6
3 5 7
4 9 2
>> c1 = a * b % 矩陣叉乘
c1 =
103 80 117
110 84 106
51 96 33
>> c2 = a .* b % 矩陣點(diǎn)乘, 矩陣對(duì)應(yīng)元素位置的元素相乘
c2 =
64 9 18
27 30 35
4 9 20
>> e =a^2 % 矩陣的次方, 表示a * 2
e =
148 129 99
131 122 107
27 25 108
>> d = a.^2 % 矩陣的乘方, 矩陣中每個(gè)元素二次方
d =
64 81 9
81 36 25
1 1 100
>> format short, pi % format用于更改顯示的輸出格式
ans =
3.1416
>> format long, pi
ans =
3.141592653589793
>> iskeyword % 查詢(xún)關(guān)鍵字
ans =
'break'
'case'
'catch'
'classdef'
'continue'
'else'
'elseif'
'end'
'for'
'function'
'global'
'if'
'otherwise'
'parfor'
'persistent'
'return'
'spmd'
'switch'
'try'
'while'
>> class(a) % 獲取定義的數(shù)據(jù)類(lèi)型
ans =
double
>> a = cast(a, 'uint8') % 改變數(shù)據(jù)類(lèi)型
a =
8 9 3
9 6 5
1 1 10
>> class(a)
ans =
uint8
帶.
的運(yùn)算方式表示對(duì)矩陣元素的運(yùn)算, 矩陣的右除是一般意義的除法, a./b = b.\a
MatLab默認(rèn)的輸出格式為雙精度(
double
)
變量
- 變量名區(qū)分大小寫(xiě), 以字母開(kāi)頭, 后跟字母數(shù)字下劃線
數(shù)組
數(shù)組作為Matlab存儲(chǔ)和運(yùn)算的基本單元
數(shù)組創(chuàng)建
>> a = [1 2 3] % 直接創(chuàng)建, 以空格或者逗號(hào)隔開(kāi)
a =
1 2 3
>> a = 0 : 1 : 3 % x = a:inc:b a和b為起始數(shù)和終止數(shù), inc為間隔步長(zhǎng)
a =
0 1 2 3
>> a = linspace(1, 3, 3) % 等間距線性創(chuàng)建法, a = linspace(a, b, n), 在a和b區(qū)間取n個(gè)點(diǎn)
a =
1 2 3
>> a = logspace(1, 3, 3) % 等間距對(duì)數(shù)創(chuàng)建法
a =
10 100 1000
數(shù)組訪問(wèn)
a =
10 100 1000
>> a(2) % 索引訪問(wèn), 從1開(kāi)始
ans =
100
>> a(2 : 3) % 按塊訪問(wèn)
ans =
100 1000
>> a(2 : end)
ans =
100 1000
多維數(shù)組
- 直接創(chuàng)建(一位數(shù)組的創(chuàng)建方式), 同行元素用空格和逗號(hào)隔開(kāi), 不同行用分號(hào)隔開(kāi)
- 在
新建變量
的窗口, 更改變量名, 插入數(shù)據(jù) - 大規(guī)模數(shù)據(jù)可以使用
導(dǎo)入數(shù)據(jù)
導(dǎo)入工作空間 - 使用已有函數(shù)
常用標(biāo)準(zhǔn)數(shù)組
- eye生成單位矩陣
- ones生成全1數(shù)組
- rand生成隨機(jī)數(shù)組, 服從均勻分布
- randn生成隨機(jī)數(shù)組, 服從正態(tài)分布
- zeros生成全0數(shù)組
- diag生成對(duì)角矩陣
>> a = -3:3
a =
-3 -2 -1 0 1 2 3
>> k = find(a > 0) % 找到符合條件的下標(biāo)
k =
5 6 7
>> sort(a) % 對(duì)數(shù)組排序
ans =
-3 -2 -1 0 1 2 3
字符串
字符串是用單引號(hào)
括起來(lái)的一系列字符的組合
>> str = 'hello world' % 定義字符串
str =
hello world
>> size(str) % 查看字符串的大小
ans =
1 11
>> u = mat2str(pi * eye(2)) % 將矩陣轉(zhuǎn)化為字符串
u =
[3.14159265358979 0;0 3.14159265358979]
>> class(u)
ans =
char
>> disp(u) % 打印字符串
[3.14159265358979 0;0 3.14159265358979]
>> size(u)
ans =
1 39
>> t = 23
>> tempText = [ 'Temperature is ', num2str(t), 'C'] # 字符串的拼接, 使用num2str將數(shù)字轉(zhuǎn)換為字符串
tempText =
Temperature is 23C
關(guān)系運(yùn)算符
關(guān)系運(yùn)算符主要比較兩個(gè)同維數(shù)的數(shù)組的大小
3. 矩陣運(yùn)算
常用函數(shù)列舉
chol(A) % 對(duì)矩陣A進(jìn)行Cholesky分解
det(A) % 矩陣A的行列式
eig(A) % 矩陣A的特征值和特征向量
inv(A) % 矩陣A的逆
svd(A) % 矩陣A的奇異值
eye(r, c) % 生成r * c的單位矩陣
magic(n) % 生成n*n的魔幻矩陣
ones(r, c) % 生成r*c的全1矩陣
rand(r, c) % 生成r*c的元素值0和1之間的隨機(jī)矩陣
zeros(r, c) % 生成r*c的全0矩陣
cond(A) %利用奇異值分解求矩陣A的范數(shù)
求行列式
>> for i = 1:3
A = magic(i + 2)
a(i) = det(A) % 矩陣行列式
disp('矩陣:') % 打印字符串
disp(A)
disp('矩陣的行列式')
disp(a(i))
end
稀疏矩陣
>> a = [0 0 0 5; 0 1 0 0; 1 5 0 0; 0 0 0 3]
a =
0 0 0 5
0 1 0 0
1 5 0 0
0 0 0 3
>> as= sparse(a) % 創(chuàng)建稀疏矩陣
as =
(3,1) 1
(2,2) 1
(3,2) 5
(1,4) 5
(4,4) 3
>> af = full(as) % 還原矩陣
af =
0 0 0 5
0 1 0 0
1 5 0 0
0 0 0 3
線性方程組
恰定方程組是方程組個(gè)數(shù)和未知數(shù)個(gè)數(shù)相同的方程組, 使用左除
求解.
4. MatLab編程基礎(chǔ)
Matlab可以像C一樣編程, 編寫(xiě)執(zhí)行命令的腳本和函數(shù)功能的模塊, 文件以.m
為后綴
打開(kāi)M文件編輯器:
- 新建->腳本
- 在命令行輸入edit命令, 或者
edit filename
命令
% 一個(gè)簡(jiǎn)單的腳本文件
echo on % 腳本文件內(nèi)容顯示在命令窗口
t = 0 : pi/20 : 2 *pi;
num = input('輸入數(shù)字:'); % 提示用戶(hù)輸入內(nèi)容
disp(num); % 顯示結(jié)果
echo off %關(guān)閉命令行顯示
流程控制
for循環(huán)
for x = array % x為循環(huán)變量, array是條件數(shù)組
commands % 循環(huán)執(zhí)行的代碼
end
% example
for i = 1: 1: 10
a(i) = sin(i * pi /5)
end
a % 輸入a
while循環(huán)
while expression
commands
end
% example
num = 10;
while num >1
num = num / 2
end
if條件結(jié)構(gòu)
if expression
commands
elseif
commands
else
commands
end
switch分支選擇結(jié)構(gòu)
switch expression
case test_expression1
commands1
case test_expression2
commands2
otherwise
commands3
end
% example
x = input('輸入需要換算的長(zhǎng)度數(shù)值cm:');
unit = input('選擇轉(zhuǎn)換單位 (1 in, 2 ft, 3 m. 4 mm, 5 cm):');
switch unit
case {'inch', 'in', 1}
y = x * 2.54;
case {'feel', 'ft', 2}
y = x * 2.54 / 12;
case {'meter', 'm', 3}
y = x / 100;
case {'centermeter', 'cm', 4}
y = x;
case {'milimeter', 'mm', 5}
y = x * 10;
otherwise
disp('Unkonwn Units');
y = NaN;
end
disp(y)
try-catch結(jié)構(gòu)
try用于捕獲try后語(yǔ)句的異常, 交給catch語(yǔ)句處理異常
try
commands
catch
commands
end
% example
x = rand(4 ,2)
y = magic(3)
try
z = x * y
catch
z = NaN
disp('兩矩陣維數(shù)不同, 計(jì)算錯(cuò)誤!')
end
disp(lasterr)
disp(lasterror)
continue,break,return關(guān)鍵字的應(yīng)用場(chǎng)景與其他語(yǔ)言基本相同
M函數(shù)文件
M函數(shù)文件與M腳本文件的不同:
- M函數(shù)文件第一行必須是function引導(dǎo)的聲明語(yǔ)句, 成為函數(shù)聲明行
- 函數(shù)執(zhí)行中, 函數(shù)體內(nèi)變量臨時(shí)建立工作區(qū), 稱(chēng)為函數(shù)工作區(qū)
- M函數(shù)文件可以調(diào)用M腳本文件
- M函數(shù)文件中可以創(chuàng)建一個(gè)或多個(gè)函數(shù)
繪制函數(shù)在區(qū)間的曲線
function y = sinex(x)
% sinex.m
y = exp(-x / 3).*sin(3 * x)
% 命令行調(diào)用函數(shù)
>> fh = @sinex
>> ezplot(fh, [0, 4 * pi, -1, 1]);
5. 幫助
Matlab所有函數(shù)都有詳細(xì)的幫助文檔, 通過(guò)一下的方式可以更好的使用文檔:
- 命令行輸入
doc functionname
(完整的文檔) - 輸出
functionname(
程序進(jìn)進(jìn)行智能文檔提示(速度慢) - 命令行輸入
help mean
(簡(jiǎn)單的文檔)
6. 參考鏈接
- 官方學(xué)習(xí)手冊(cè)
<MatLab從入門(mén)到精通, 周建興>
- 官方文檔