1. 程式人生 > >matlab基礎操作查漏補缺

matlab基礎操作查漏補缺

矩陣

矩陣的元素可以是數值和表示式
mxn稱為矩陣
mx1或1xm稱為向量
1x1稱為標量
複數的表示: m+ni

生成矩陣的命令

zeros(n) 建立一個nxn的0矩陣
ones(n) 建立一個nxx的1矩陣
eye() 建立一個主對角線都是1的矩陣
rand() 所有的值都是[0,1]區間的隨機數
randn() 均值為0,均方差σ為1的標準正態分佈的隨機值
cat()沿指定的維方向串接成高維數矩陣
horzcat()沿水平方向串接成高緯度矩陣
vercat()沿豎直方向串接成高緯度矩陣
repmat(X,m,n) 通過賦值X矩陣和堆疊,形成一個新的矩陣
m 是豎直方向複製的次數
n 是水平方向複製的次數

對數等分向量: logspace(x1,x2,n)
x1: 起始值是10^x1
x2: 終止值是10^x2
n:生成的向量包含n個元素

矩陣資訊的獲取

size(X,dim) 獲取矩陣X的維度資訊
dim 如果是1表示豎直方向,如果是2表示水平方向
length(X)是獲取矩陣X中長度最長的方向的長度
ndims() 獲取矩陣的維度
numel() 獲取矩陣的元素個數

transpose(X)是對X的非共軛轉置 同 X.’
ctranspose(X) 是對X的共軛轉置 同 X’
reshape(X,m,n) 是將X矩陣的元素按列的方向排列重組成mxn的新矩陣
tril(X,k) k = 0 是以主對角線為基準的值,>0是基準以上,<0是基準以下
triu(X,k) k的含義與tril的k 剛好相反
diag(X,k) 抽取主對角線以上第k條對角線作為向量
blkdiag(a,b,c,d,…) 構造以輸入元素作為對角線元素的矩陣,其他的補0

稀疏矩陣

由於矩陣中非0元素比較少,直接描述矩陣中非0元素的位置和值,來減少記憶體的佔用和方便觀察

例:
0 0
1 0
用係數矩陣描述就是
(2,1) 1

sparse(X) 將正常矩陣X轉換為稀疏矩陣
full(A) 將稀疏矩陣A 轉換為正常的矩陣表達形式
speye() spones() sprand() sprandn() 對應與正常矩陣的eye(),ones(),rand()和randn()
區別是 spones(S)是將稀疏矩陣S 中非元素全部變成1
sprand()和sprandn()的引數都需要多加一個density(密度)

矩陣操作函式
  • det() 求一個矩陣的行列式 det(A)=0是奇異矩陣(無解或無窮解) det(A)≠0(非奇異陣,唯一解)
  • inv() 求一個矩陣的逆矩陣
  • det() = 0 或趨近於0 ,則稱這個矩陣是病態的,即構成的方程組對微小的資料擾動,解的差別會極大
    用範數來衡量這種病態程度,包括1-範數(norm(A,1)),2-範數(norm(A,2)或norm(A)),∞-範數(norm(A,inf))三種常見形式
    條件數的定義是 A的範數與A的逆矩陣的範數的乘積
    1-範數下的條件數cond(A,1) 2-範數下的條件數cond(A,2) ∞-範數下的條件數cond(A,inf)
    條件數越大矩陣越病態,當值趨近於10^16時,為奇異矩陣
  • rank()求一個矩陣的秩
基本的程式設計命令
  • 從控制檯由使用者輸入資料
    input(‘提示資訊’) 輸入數值變數
    input(‘提示資訊’,‘s’) 輸入字串變數
    格式化輸出:
    fprintf(fileID,format,A)
    fileID 一個檔案物件(檔案物件可以通過fopen(filepath,limit))得到
    limit 有’r’只讀 'w’讀寫 'a’如果沒有檔案就建立
    fopen()之後一定要在程式結束時fclose(fileID) 把檔案從記憶體寫回到磁碟
    format有以下形式:
  • %d 整數
  • %f 小數
  • %e 實數(科學記數法的形式)
  • %s 字串

A指輸出的資料

從excel格式的檔案中讀入資料的命令
xlsread(‘filepath’,sheet_num);
filepath是.xsl格式檔案的儲存位置,sheet_num是要讀取的sheet的標號

  • 函式
    獲得輸入引數的個數 nargin(‘function_name’)
    獲得函式返回值的個數 nargout(‘function_name’)
    匿名函式的建立(不需要單獨寫在.m檔案中)
    格式:fun = @(argument)expression
資料的統計特徵

std() 求傳入資料的標準差
cov() 求協方差
mean() 求算數平均值
prod() 求各元素的乘積
var() 求方差
range() 求極差
median() 求中值

引數估計的通用函式
[phat,pci]=mle(‘namedist’,x)
phat為估計值
pci為置信區間
‘namedist’ 是分佈函式的名字
x是樣本資料

vpa(x,n)
x是符號或數值
n 是將x的結果取n位有效數字
digits(n) 是直接規定運算的結果的有效數字位數

clf命令是清除當前的曲線
[x,y] = ginput(n) 用滑鼠從影象中取n個點,結果儲存在[x,y]中
figure(n) 建立編號為n的圖形視窗
pie(x,explorde) 繪製餅狀圖
x 是一個向量,explode 是一個由0和1組成的向量,長度和x相同,explode中為1的部分在餅圖中會獨立出來,為0的部分和剩餘部分連線在一起

hidden on 透視被疊壓的圖形
hidden off 隱藏顯示被疊壓的圖形

繪製地圖的命令

file = shaperead(path) % path是.shp檔案的路徑
mapshow(file); title('地圖');