【Matlab學習筆記】基本指令介紹

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(2522^{-52}), 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) 相關係數

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章