Contents
I. 清空環境變量及命令
II. 變量命令規則
III. MATLAB數據類型
IV. MATLAB矩陣操作
V. MATLAB邏輯與流程控制
VI. MATLAB腳本與函數文件
VII. MATLAB基本繪圖操作
VIII. MATLAB文件導入
清空環境變量及命令
clear all % 清除Workspace中的所有變量
clc % 清除Command Window中的所有命令
II. 變量命令規則
1. 變量名區分大小寫
A = 2 a = 3 與其他編程語言相同
2. 變量名長度不超過63位
3. 變量名以字母開頭,可以由字母、數字和下划線組成,但不能使用標點
4. 變量名應簡潔明了,通過變量名可以直觀看出變量所表示的物理意義
A = rand(3,5) 三行五列的零到一的隨機數
rows = size(A, 1) A矩陣的行數
cols = size(A, 2) A矩陣的列數
III. MATLAB數據類型
1. 數字
2. 字符與字符串
s = 'a'
abs(s) 絕對值函數
char(65)
num2str(65)
str = 'I Love MATLAB & Machine Learning.'
length(str) 包含空格和標點
doc num2str 說明書
3. 矩陣
A = [1 2 3; 4 5 2; 3 2 7]
B = A' B表示為A的轉置
C = A(:) 將矩陣A轉為一列列向量
D = inv(A) 求逆矩陣
E = zeros(10,5,3) 三維矩陣 10*5*3
E(:,:,1) = rand(10,5)
E(:,:,2) = randi(5, 10,5)
Randi()用法
randi() 函數生成均勻分布的偽隨機整數,
范圍為imin--imax,如果沒指定imin,則默認為1。
r = randi(imax,n):生成n*n的矩陣
r = randi(imax,m,n):生成m*n的矩陣
r = randi(imax,[m,n]):同上
r = randi(imax,m,n,p,...):生成m*n*p*...的矩陣
r = randi(imax,[m,n,p,...])同上
r = randi(imax):1*1的矩陣
r = randi(imax,size(A)):和size(A)同維的矩陣
r= randi([imin,imax],...)
E(:,:,3) = randn(10,5)
函數randn
生成元素服從正態分布(N(0,1))的數值與陣列格式
Y = randn(n) %返回n*n階的方陣Y,其元素服從正態分布N(0,1)。若n不是一標量,則顯示一出錯信息。
Y = randn(m,n)、Y = randn([m n]) %返回階數為m*n的,元素均勻分布於區間(0,1)上矩陣Y。
Y = randn(m,n,p,…)、Y = randn([mn p…])%生成階數m*n*p*…的,元素服從正態分布的多維隨機陣列Y。
Y = randn(size(A)) %生成一與陣列A同型的隨機正態陣列Y
randn %該命令在每次單獨使用時,都返回一隨機數(服從正態分布)。
元胞數組
A = cell(1, 6) 生成一個一行六列的細胞組
A{2} = eye(3)
eye()函數常用的兩種調用方式:
eye(N) 生成一個N行N列的單位矩陣。、
eye(M,N) 生成一個M行N列的"單位"矩陣,主對角線元素為1,其余元素為0。
A{5} = magic(5)
M = magic(n)
生成一個n*n的矩陣,矩陣元素是由整數1到n^2組成的並且任何行任何列的和都相等,階數n必須是大於等於3的標量。
5. 結構體
books = struct('name',{{'Machine Learning','Data Mining'}},'price',[30 40])
books.name
books.name(1)
IV. MATLAB矩陣操作
1. 矩陣的定義與構造
A = [1 2 3 5 8 5 4 6]
B = 1:2:9 1到9之內相差為2的一行矩陣
C = repmat(B, 3, 1)
函數 repmat
* 格式 B = repmat(A,m,n) %將矩陣A復制m×n塊,即B由m×n塊A平鋪而成。
*
B = repmat(A,[m n]) %與上面一致
B = repmat(A,[m n p…]) %B由m×n×p×…個A塊平鋪而成
repmat(A,m,n) %當A是一個數a時,該命令產生一個全由a組成的m×n矩陣。
D = ones(2, 4)
ones的作用是產生全1矩陣
ones(N)是產生一個N*N的全1矩陣
2. 矩陣的四則運算
A = [1 2 3 4; 5 6 7 8]
B = [1 1 2 2; 2 2 1 1]
C = A + B
D = A - B
E = A * B' 矩陣乘法
F = A .* B 矩陣內對應數字相乘
G = A / B % B * G = A
H = A ./ B
3. 矩陣的下標
A = magic(5)
B = A(2,3)
C = A(3,:)
D = A(:,4)
[m, n] = find(A > 20)
V. MATLAB邏輯與流程控制
1. if ... else ... end
A = rand(1,10)
limit = 0.75;
B = (A > limit); % B is a vector of logical values
if any(B)
fprintf('Indices of values > %4.2f: \n', limit);
disp(find(B))
else
disp('All values are below the limit.')
end
1、代碼
[plain] view plain copy
1. >> fprintf('你好呀。我要輸出%d\n',3)
2、效果
[plain] view plain copy
1. 你好呀。我要輸出3
matlab中disp()就是屏幕輸出函數,類似於c語言中的printf()函數
2. for ... end
k = 10;
hilbert = zeros(k,k);
% Preallocate matrix
for
m = 1:k
for
n = 1:k
hilbert(m,n) = 1/(m+n -1);
end
end
hilbert
3. while ... end
n = 1;
nFactorial = 1;
while
nFactorial < 1e100
n = n + 1;
nFactorial = nFactorial * n;
end
n
factorial(69)
factorial(70)
prod(1:69)
prod(1:70)
4. switch ... case ... end
mynumber = input(
'Enter a number:'
);
switch
mynumber
case
-1
disp(
'negative one'
);
case
0
disp(
'zero'
);
case
1
disp(
'positive one'
);
otherwise
disp(
'other value'
);
end
VI. MATLAB腳本與函數文件
1. 腳本文件
myScript
2. 函數文件
mynumber = input('Enter a number:');
output = myFunction(mynumber)
VII. MATLAB基本繪圖操作
1. 二維平面繪圖
x = 0:0.01:2*pi;
y = sin(x);
figure
plot(x, y)
title('y = sin(x)')
xlabel('x')
ylabel('sin(x)')
xlim([0 2*pi])
x = 0:0.01:20;
y1 = 200*exp(-0.05*x).*sin(x);
y2 = 0.8*exp(-0.5*x).*sin(10*x);
figure
[AX,H1,H2] = plotyy(x,y1,x,y2,'plot');
set(get(AX(1),'Ylabel'),'String','Slow Decay')
set(get(AX(2),'Ylabel'),'String','Fast Decay')
xlabel('Time (\musec)')
title('Multiple Decay Rates')
set(H1,'LineStyle','--')
set(H2,'LineStyle',':')
2. 三維立體繪圖
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t)
xlabel('sin(t)')
ylabel('cos(t)')
zlabel('t')
grid on
axis square
3. 圖形的保存與導出
% (1) Edit → Copy Figure
% (2) Toolbar → Save
% (3) print('-depsc','-tiff','-r300','picture1')
% (4) File → Export Setup
VIII. MATLAB文件導入
1. mat格式
save data.mat x y1 y2
clear all
load data.mat
2. txt格式
M = importdata('myfile.txt');
S = M.data;
save 'data.txt' S -ascii
T = load('data.txt');
isequal(S, T)
3. xls格式
xlswrite('data.xls',S)
W = xlsread('data.xls');
isequal(S, W)
xlswrite('data.xlsx',S)
U = xlsread('data.xlsx');
isequal(S, U)
4. csv格式
csvwrite('data.csv',S)
V = csvread('data.csv');
isequal(S, V)
Published with MATLAB® 7.14