Matlab 和MathemaTIca、Maple 并稱為三大數學軟件。它在數學類科技應用軟件中在數值計算方面首屈一指。Matlab 可以進行矩陣運算、繪制函數和數據、實現算法、創建用戶界面、連接其他編程語言的程序等,主要應用于工程計算、控制設計、信號處理與通訊、圖像處理、信號檢測、金融建模設計與分析等領域。因而其在電子行業也有廣泛應用。
Matlab 入門寶典:(點擊帶社區名稱的標題即可下載)
《初學者寶典——Matlab 基礎及其應用教程》
《Matlab 從入門到精通》
《Matlab 常用函數參考》
《Matlab 信號處理寶典》
書籍分享——一些和matlab有關的書_電子技術基礎-面包板社區《Matlab 編程-菜鳥入門》
MATLAB編程-菜鳥入門(清晰版)-面包板社區《Matlab 揭秘》
《Matlab揭秘》中文版-面包板社區
Matlab 編程與算法:
《Matlab 編程(中文第二版)》
國外高校電子信息類優秀教材---MATLAB 編程(中文第二版)-Stephen J C著-面包板社區《Matlab 語言常用算法程序集》
《MATLAB語言常用算法程序集》-面包板社區《Matlab 高效編程25個案例,可應用于數學建模等》
Matlab高效編程案例-面包板社區《精通Matlab 最優化計算》
《精通MATLAB最優化計算(第2版)》-面包板社區《Matlab 算法大全》
《Matlab 7 官方學習手冊》
《Matlab 2013 超強教程》
資料:Matlab編程與算法教程_電子技術基礎-面包板社區
《Matlab 智能算法30個案例分析及源代碼》
MATLAB智能算法30個案例分析及源代碼-面包板社區《卡爾曼濾波簡介及其算法MATLAB實現代碼》
卡爾曼濾波簡介及其算法MATLAB實現代碼-面包板社區《小波分析基礎》
《基于Matlab 的系統分析與設計——小波分析》
《Matlab 小波分析高級技術》
《時間序列的小波分析》
資料:MATLAB小波分析_EDA工具與IC設計-面包板社區《如何用Matlab 對信號進行傅里葉變換》
如何用matlab對信號進行傅里葉變換_可編程器件-面包板社區
補充資料:
《Matlab 語言與 C 語言的區別》
MATLAB語言與C語言的區別_嵌入式系統與MCU-面包板社區
《基于Matlab 的有源濾波器的實現 》
基于MATLAB的有源濾波器的實現-面包板社區
《先進PID控制Matlab 仿真》
《先進PID控制MATLAB仿真》-劉金琨-第2版-面包板社區《MATLAB-Simulink 電力系統建模與仿真》
《MATLAB-Simulink 電力系統建模與仿真》-面包板社區
《工程與科學數值方法的Matlab 實現》
好書推薦:工程與科學數值方法的MATLAB實現(第2版)_EDA工具與IC設計-面包板社區《Matlab 神經網絡43個案例分析》
MATLAB神經網絡-面包板社區
常用控制命令
直接計算
續行輸入
MATLAB搜索路徑設置
數組創建
隨機函數
元素標示與尋訪
MATLAB help系統(友情提示:非常強大遇到問題首選它)
MATLAB數據類型
元胞數組
邏輯和流程控制
MATLAB的數據流控制
并行處理
數據可視化
ans %最新計算默認變量
cd %設置當前工作目錄
clf %清除圖形窗
clc %清屏
clear %清除工作空間
dir %文件目錄清單
doc %顯示幫助信息
diary %把指令記錄為文件
edit %打開M文件編輯器
exit %關閉MATLAB
help %顯示幫助信息
quit %關閉MATLAB
return %返回上層調用程序
type %顯示指定M文件內容
which magic %文件目錄
who %內存變量
whos %內存變量 詳細
(12+2*(7-4))/3^2
y1 = 2*sin(0.3*pi)/(1+sqrt(5))
y2 = 2*cos(0.3*pi)/(1+sqrt(5))
S = 1-1/2+1/3-1/4+ ...
1/5-1/6+1/7-1/8
A = pwd
cd('c:\')
cd(A)
path(path,'c:/')
% 逐個元素輸入法
a1 = 1:6
a1 = 6:-1:1
a2 = 0:pi/4:pi
a3 = 1:-0.1:0
% 二維數組的創建
a = 2.7358; b = 33/79;
C = [100 1,2*a+i*b,b*sqrt(a); sin(pi/4),a+5*b,3.5+i,5]
% 中規模數組的數組編輯器創建法
% 試用變量編輯器,把如下的數組輸入MATLAB內存,并命名為A18。
a = [0.8147 0.9134 0.2785 0.9649 0.9572 0.1419
0.9058 0.6324 0.5469 0.1576 0.4854 0.4218
0.1270 0.0975 0.9575 0.9706 0.8003 0.9157]
% 中規模數組的M文件創建法
A = [ 92 99 1 8 15 67 74 51 58 40
98 80 7 14 16 73 55 57 64 41
4 81 88 20 22 54 56 63 70 47
85 87 19 21 3 60 62 69 71 28
86 93 25 2 9 61 68 75 52 34
17 24 76 83 90 42 49 26 33 65
23 5 82 89 91 48 30 32 39 66
79 6 13 95 97 29 31 38 45 72
10 12 94 96 78 35 37 44 46 53
11 18 100 77 84 36 43 50 27 59]
% 標準與經典數組生成函數
ao = ones(2, 4) %1矩陣
az = zeros(2, 5) %零矩陣
ae = eye(3) %單位矩陣
am = magic(4) %魔方矩陣
ad = diag(am) %對角矩陣
add = diag(diag(am))
Au = rand(1, 5) %0-1均勻分布的1x5隨機矩陣
Ai = randi([-3, 4], 2, 8) %-3到4均勻分布的2x8隨機矩陣
An = randn(3, 4) %標準正態分布的3x4矩陣
out = randsrc(10, 10, [-3 -1 1 3; .25 .25 .25 .25])
% randsrc 生成指定范圍的隨機數;在-3 1 1 3四個數中隨機選生成10x10的矩陣,后面的0.25
% 是每個數對應的概率
Ap = randperm(8); %隨機排序1到8
A = zeros(2, 6)
A(:) = 1:12
a8 = A(8)
a311 = A([3, 11])
A(3, 3) = 37
a13 = A(:, 1:3)
aend = A(1:3, 4:end)
A([1 3], 4:end)
L = A<3
% A(L) = NaN
A(L) = []
% 數組的擴充和收縮
a = 1:5; b = 6:10; c = 11:15;
a_b = [a b]
ab = [a;b;c]
a_2 = [a b c ]
AB1 = repmat(ab, [1, 2])
AB2 = repmat(ab, [2, 3])
AB2([2, 3, 5, 6], :) = []
AB2(:, 1:3) = []
helpwin datafun
help datafun
doc datafun
lookfor sum
docsearch sum
% 雙精度
a = magic(4)
% 邏輯
1 == 2
% 字符串
a = '加油 帥哥'
% 元胞
b = cell(1, 2)
% 結構體
a1.a1 = 100
a1.a2 = '隨緣'
a1.a3 = 1 == 2
a1.a4 = dataset(magic(4))
% 函數句柄
@sum
% 字符串數組
a = 'This is an example.'
size(a)
a14 = a(1:4)
ra = a(end:-1:1)
Ua = double(a)
char(Ua)
wxc = '貴有恒'
Ua = double(wxc)
char(Ua)
w = find(a>= 'a'&a<= 'z');
a(w) = a(w)-32;
char(a)
b = 'Example ''3.2-1'''
% 多行字符串數組的創建
% 多行串數組的“補空等長”直接輸入法;非等長串數組借助char , str2mat , strvcat等指令聲稱多行串數組
clear
S = ['This string array '
'has multiple rows.']
size(S)
S1 = char('This string array', 'has two rows.')
size(S1)
S2 = str2mat('這', '字符', '串數組', '', '由4行組成')
size(S2)
S3 = strvcat('這', '字符', '串數組', '', '由4行組成')
size(S3)
% 元胞數組的創建和顯示
% 1 外標識元胞元素賦值
C_str = char('這是', '胞元數組創建算例 1');
R = reshape(1:12, 3, 4)
Cn = 1+2i;
S_sym = sym('sin(-3*t)*exp(-t)'); % 符號數組
A(1, 1) = {C_str}; A(1, 2) = {R}; A(2, 1) = {Cn}; A(2, 2) = {S_sym};
A
% 2 編址元胞元素內涵直接賦值
B{1, 1} = C_str; B{1, 2} = R; B{2, 1} = Cn; B{2, 2} = S_sym;
celldisp(B)
cellplot(B)
% 3 元胞數組的擴充、收縮和重組
C = cell(2);
C(:, 1) = {char('Another', 'text string'); 10:-1:1}
% 4 元胞數組的“列”擴充和“行”擴充
AC = [A C]
A_C = [A; C]
cellplot(A_C, 'legend')
A_C(3, :) = []
R_A_C = reshape(A_C, 2, 3)
% 5 元胞數組內容的獲取和配置
f1 = R_A_C(1, 3)
class(f1)
f2 = R_A_C{1, 3}
class(f2)
f3 = R_A_C{1, 1}(:, [1 2 5 6])
% f3 = R_A_C(1, 1)(:, [1 2 5 6])
[f4, f5, f6] = deal(R_A_C{[1, 3, 4]})
[ff4, ff5, ff6] = R_A_C{[1, 3, 4]}
% 6 元胞與數值數組之間的轉換
rng(0, 'v5uniform')
A = rand(2, 3)
C1 = num2cell(A)
SC1 = size(C1)
C2 = num2cell(A, 2)
disp(['C2{1, :} = ', mat2str(C2{1, :}, 4)]) % 有效數字
SC2 = size(C2)
C3 = num2cell(A, 1)
SC3 = size(C3)
% 7 對元胞數組運算的cellfun指令
rng(1)
x(1) = {1:10}; x(2) = {rand(100, 2)};
xm = cellfun(@mean, x, 'UniformOutput', 0)
class(xm)
A = 1:9, B = 10-A
r0 = (A<4)
r1 = (A == B)
t = -3*pi:pi/10:3*pi;
y = sin(t)./t;
tt = t+(t == 0)*eps;
yy = sin(tt)./tt;
subplot(1, 2, 1), plot(t, y), axis([-9, 9, -0.5, 1.2]),
xlabel('t'), ylabel('y'), title('殘缺圖形')
subplot(1, 2, 2), plot(tt, yy), axis([-9, 9, -0.5, 1.2])
xlabel('tt'), ylabel('yy'), title('正確圖形')
A = [-2, -1, 0, 0, 1, 2, 3]
L1 = ~(A>1) % 判斷哪些不大于1
L2 = (A>-1)& ( A>0 &A<3) % 判斷哪些大于0小于2
% 常用邏輯函數
a = false(1, 10)
true(1, 10)
isempty(A)
isnan(A)
ischar('A')
tic; %tic與toc配合使用,常看這兩個命令中間程序的運行時間
% for循環和while循環控制
for s = 0:1000000
x = exp(i * 2)* exp(i * 3 + sin(i*i)) * sin(i)^2;
end
time_for = toc
tic;
s = 0;
while s~=1000000
x = exp(i * 2)* exp(i * 3 + sin(i*i)) * sin(i)^2;
s = s+1;
end
time_for = toc
matlabpool
tic
parfor s = 0:1000000
x = exp(i * 2)* exp(i * 3 + sin(i*i)) * sin(i)^2;
end
time_parfor = toc
% 三維
x = linspace(-2, 2, 25); % 在x軸上取25點
y = linspace(-2, 2, 25); % 在y軸上取25點
[xx,yy] = meshgrid(x, y); % xx和yy都是25x25的矩陣
zz = xx.*exp(-xx.^2-yy.^2); % 計算函數值,zz也是21x21的矩陣
mesh(xx, yy, zz) % 畫出立體網狀圖
x = linspace(-2, 2, 25); % 在x軸上取25點
y = linspace(-2, 2, 25); % 在y軸上取25點
[xx, yy] = meshgrid(x, y); % xx和yy都是25x25的矩陣
zz = xx.*exp(-xx.^2 - yy.^2); % 計算函數值,zz也是25x25的矩陣
surf(xx, yy, zz); % 畫出立體曲面圖
peaks
% 對peaks函數取點,再以各種不同方法進行繪圖。meshz可將曲面加上圍裙
[x, y, z] = peaks;
meshz(x, y, z);
% waterfall可在x方向或y方向產生水流效果
[x, y, z] = peaks;
waterfall(x, y, z)
% 下列命令產生在y方向的水流效果
[x, y, z] = peaks;
waterfall(x', y', z')
% meshc同時畫出網狀圖與等高線
[x, y, z] = peaks;
meshc(x, y, z)
% surfc同時畫出曲面圖與等高線
[x, y, z] = peaks;
surfc(x, y, z)
% contour3畫出曲面在三度空間中的等高線:
contour3(peaks, 20)
% contour畫出曲面等高線在XY平面的投影
contour(peaks, 20)
% plot3可畫出三度空間中的曲線
t = linspace(0, 20*pi, 501);
plot3(t.*sin(t), t.*cos(t), t)
% 亦可同時畫出兩條三度空間中的曲線
t = linspace(0, 10*pi, 501);
plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t)
友情提示:可將代碼復制到m文件中,一行一行運行,根據輸出結果,了解每個命令的作用。
Matlab 三維畫圖示例