0. 基礎知識
獲取幫助: help / help <函數名> / help win / help desk = doc
找出相關命令: look for <關鍵字>
類型 | 信息 | |||
---|---|---|---|---|
基本型 | 數值型 | 整型 | 無符號 | uint 8/16/32/64 |
有符號 | int 8/16/32/64 | |||
浮點型 | 單精度 | single | ||
雙精度 | double(默認) | |||
字符串 | ||||
構造型 | 數組/矩陣 | 只能含有同種類型, 定義[], 訪問() | ||
元胞 | 可以含有不同類型, 定義{}, 訪問{} | |||
結構 | struct 域 field | |||
類 | ||||
符號對象 |
常量: 內部定義的 ans, eps(), realmax, realmin, pi, version, NaN, mf, i, j, lasterr 可以賦值, 但clear all後恢復默認值
所有變量以數組/矩陣形式保存
變量類型 | |
---|---|
Local | 函數中定義的, 函數結束即死亡 |
Global | 在工作空間, clear後死亡(多函數可用) |
Persistent | 類似static變量, .m文件中定義使用, clear後死亡 |
who 工作空間變量名
whos 工作空間變量名及其信息
whor <變量名>
clear xxx 刪除xxx變量
clc 清除記錄
intmax(‘int8’)
intmin(‘int16’)
realmax(‘single’)
realmin(‘double’)
class(xxx) 查看數據類型
round(xxx) 最接近整數
fix(xxx) 向0靠近的整數
floor(xxx) 小於xxx的整數
ceil(xxx) 大於xxx的整數
format short/long/… 替換輸出格式
find(x) 返回非零的索引值
虛數: 2-3i (3和i之間不能有空格) / complex(2, -3)
邏輯: 0/1
三元運算 | |
---|---|
數值運算 | + - * \ / ^ .+ .- .* .\ ./ .^ |
關係運算 | == ~= < <= > >= || && |
邏輯運算 | & | ~ any() or() not() all() xor() |
1. 矩陣
數組/矩陣類型 | ||
---|---|---|
直接構造 | […], " “或”,"爲行內間隔, ";"爲行間間隔 | |
增量法 | “:” | x = i : j (默認間距1, 遞增), x = i : k : j (間距k, 遞增), x = i : -k : j (間距k,遞減) |
等差向量 | linspace(2, 8, 10), 2到8等差取10個數(默認100個數) | |
等比向量 | logspace(2, 8, 10), 2到8等比取10個數(默認100個數) | |
特殊 | zeros, ones, eye(單位矩陣, 默認2維), magic, rand(均勻分佈隨機), randn(正態分佈隨機), diag(對角陣) | |
複合 | B = [A, eye(3), ones(3), A .* 2] |
返回矩陣行列數: size(A)
轉置: ’
共軛轉置: .’
A(r, c) 取r行c列元素, (r/c=":", 值全部)
A(😃 所有元素排成一列
A(😃 = D(😃 要求D, A元素數量相等, 可保持A行列形式不變替換值
x = [], 清空但不刪除x
A(:, 3:4) = [], 刪除3, 4列
flipud(x) 沿水平線翻轉
fliplr(x) 沿垂直線翻轉
reshape(A, 1, 9) 重整行列數
rot90(x) 逆時針旋轉90°
det(x) 行列式
rank(x) 秩
inv(x) 逆
trace(x) 跡
eig(x) 特徵向量
[U, S, V] = svd(x) SVD奇異值分解
2. 字符串
c = ‘B1-%’ c(1)爲"B",
char(97)爲"B"
num2str(97)爲"97"
mat2str()
int2str()
a = [‘I’, ‘Am’; ‘a’, ‘uo’] = [‘IAm’; ‘auo’] 要保證每一行維數相等
strcat('I ', ‘Am’) 爲"IAm", 去掉尾空格
length(a) = max(size(a))
isletter()
isspace()
findstr(A, a)
strcmp(A, B)
3. 函數句柄
f = @functionname f可代替函數名
a = f(x, y)
sq = @(x)x.^2 那麼sq(5) = 25
4. 元胞
a{1} 訪問第一個元素
a = {[2, 3; 3, 4], ‘str’; 42, {1}}
a = cell(3, 3)
a{3, 2} = rand(3, 4)
deal(a{:}) 查看內容
a{1, 2} = [] 刪除
num2cell()
celldisp(a) 顯示域
5. 結構
student(1) 訪問第一個
student(1).name = ‘a’
student(2).name = ‘b’
student(1).grade = 4
student(3) = struct(‘name’, ‘c’, ‘grade’, 5)
student.name可訪問所有student的name
getfield(student(1), ‘name’)
student = rmfield(student(1), ‘name’)
6. 函數
disp()
fprintf("%d", x)
for i = 1:10 … end
while … end
try … catch … end
if … elseif / else if … end
switch … case … otherwise … end
function ret=name(x) … end
pause(3) 暫停2秒
pause 暫停直到輸入
.m文件 | |
---|---|
腳本文件 | 全局變量, 無參, 無返回 |
函數文件 | local, 有參, 有返回值 |
nargin 實際輸入個數
nargin(‘fun’) 標準輸入個數
nargout 實際輸出個數
nargout(‘fun’) 標準輸出個數
inputname(n) 第n個輸入的實際名字
varargin 變長輸入
varargin(n) 第n個輸入
varargout(n) 第n個輸出
keyboard 中斷, 出現k>>(可debug), 工作區出現local變量
標準斷點 紅: 有效, 灰: 無效
dbstop in file (at line No.) (命令行) dbstep運行, dbquit 推出debug
dbclear all / in file / in file at line 清除斷點
dbstatus
條件斷點 dbstop … if … / error / warning
profile on / profile view 分析時間
matlab優化方式: 向量化, 預定義(先聲明H=zeros(5, 10000), 再賦值)
7. 數值運算
m = max(A)
[m, idx] = max(A), 此方式獲得idx
max(a, b)
max(A, [], 2) 第2行中最大值
max(A, [], 1) = max(A)
sort(x) 默認升序
mean(x) 或 mean(x, dim)
median(x) 或 median(x, dim)
sum(x) 或 sum(x, dim)
std(x) 標準差
prod(x) 元素乘積
cumsum(x) 元素累和
cumprod(x) 元素累積
corrcoef(x) 相關係數