0912Matlab基礎(chǔ)個(gè)人使用手冊(cè)

參考博客
1)Matlab基礎(chǔ)知識(shí)
https://blog.csdn.net/weixin_44378835/article/details/104499450
(2)Matlab矩陣處理
https://blog.csdn.net/weixin_44378835/article/details/104499754
(3)Matlab程序流程控制
https://blog.csdn.net/weixin_44378835/article/details/104499474
https://blog.csdn.net/weixin_44378835/article/details/104519190
(4)Matlab繪圖
https://blog.csdn.net/weixin_44378835/article/details/104499702
https://blog.csdn.net/weixin_44378835/article/details/104535084
(5)數(shù)據(jù)分析與多項(xiàng)式計(jì)算
https://blog.csdn.net/weixin_44378835/article/details/104499775
(6)數(shù)值微積分與方程求解
https://blog.csdn.net/weixin_44378835/article/details/104499607
(7)符號(hào)計(jì)算
https://blog.csdn.net/weixin_44378835/article/details/104553728
(8)Simulink系統(tǒng)仿真
https://blog.csdn.net/weixin_44378835/article/details/104499557
(9)文件操作
https://blog.csdn.net/weixin_44378835/article/details/104499643

Matlab基礎(chǔ)

Matlab如果沒(méi)有定義變量名, 系統(tǒng)將計(jì)算結(jié)果暫存在ans臨時(shí)變量中.
優(yōu)先級(jí): 表達(dá)式從左向右運(yùn)算, 指數(shù)運(yùn)算優(yōu)先級(jí)最高, 乘除次之
(help precedence查看優(yōu)先級(jí))

常用操作命令

clc 清空命令窗口
diary 日志文件命名
who 列出工作空間的變量

save my_var.mat  % 保存工作區(qū)變量
load my_var.mat  % 加載文件中變量到工作區(qū)

運(yùn)算符號(hào)

+ - * / \ ^ '  % 加 減 矩陣乘法 右除 左除 次方 矩陣共軛轉(zhuǎn)置
.* ./ \. .^ .'  % 數(shù)組乘法 數(shù)組右除 數(shù)組左除 數(shù)組次方 矩陣轉(zhuǎn)置
/:右除。a/b表示矩陣a乘以矩陣b的逆嫩码。
\:左除炼蛤。a\b表示矩陣a的逆乘以b
./:右除。a./b表示矩陣a中的每個(gè)元素除以矩陣b的對(duì)應(yīng)的元素闰歪。
.\:左除。a.\b表示矩陣b中的每個(gè)元素除以矩陣a的對(duì)應(yīng)的元素。
RAND()*10 rand()是得到1個(gè)0~1之間的隨機(jī)小數(shù),*10以后就是0~10之間的小數(shù)round(rand()*10,0)把0~10之間的小數(shù)四舍五入取0位小數(shù)(即整數(shù))得到0~10之間的整數(shù)ROUND(RAND()*3,0)也是一樣的道理,rand(3)是指3*3的矩陣,矩陣的每個(gè)值時(shí)從0到1的隨機(jī)數(shù)
>> a = round(rand(3) * 10)
a =
     8     9     3
     9     6     5
     1     1    10
>> b = magic(3)  % 定義矩陣a和矩陣b
b =
     8     1     6
     3     5     7
     4     9     2
>> c1 = a * b  % 矩陣叉乘
c1 =
   103    80   117
   110    84   106
    51    96    33
>> c2 = a .* b  % 矩陣點(diǎn)乘, 矩陣對(duì)應(yīng)元素位置的元素相乘
c2 =
    64     9    18
    27    30    35
     4     9    20
>> e =a^2  % 矩陣的次方, 表示a * 2
e =
   148   129    99
   131   122   107
    27    25   108
>> d = a.^2  % 矩陣的乘方, 矩陣中每個(gè)元素二次方
d =
    64    81     9
    81    36    25
     1     1   100
>> format short, pi  % format用于更改顯示的輸出格式
ans =
    3.1416
>> format long, pi
ans =
   3.141592653589793
>> iskeyword  % 查詢(xún)關(guān)鍵字
ans = 
    'break'
    'case'
    'catch'
    'classdef'
    'continue'
    'else'
    'elseif'
    'end'
    'for'
    'function'
    'global'
    'if'
    'otherwise'
    'parfor'
    'persistent'
    'return'
    'spmd'
    'switch'
    'try'
    'while'
>> class(a)  % 獲取定義的數(shù)據(jù)類(lèi)型
ans =
double
>> a = cast(a, 'uint8')  % 改變數(shù)據(jù)類(lèi)型
a =
    8    9    3
    9    6    5
    1    1   10
>> class(a)
ans =
uint8

.的運(yùn)算方式表示對(duì)矩陣元素的運(yùn)算, 矩陣的右除是一般意義的除法, a./b = b.\a

MatLab默認(rèn)的輸出格式為雙精度(double)

變量

  • 變量名區(qū)分大小寫(xiě), 以字母開(kāi)頭, 后跟字母數(shù)字下劃線

數(shù)組

數(shù)組作為Matlab存儲(chǔ)和運(yùn)算的基本單元

數(shù)組創(chuàng)建

>> a = [1 2 3]  % 直接創(chuàng)建, 以空格或者逗號(hào)隔開(kāi)
a =
     1     2     3
>> a = 0 : 1 : 3  % x = a:inc:b a和b為起始數(shù)和終止數(shù), inc為間隔步長(zhǎng)
a =
     0     1     2     3
>> a = linspace(1, 3, 3)  % 等間距線性創(chuàng)建法, a = linspace(a, b, n), 在a和b區(qū)間取n個(gè)點(diǎn)
a =
     1     2     3
>> a = logspace(1, 3, 3)  % 等間距對(duì)數(shù)創(chuàng)建法
a =
          10         100        1000

數(shù)組訪問(wèn)

a =
          10         100        1000
>> a(2)  % 索引訪問(wèn), 從1開(kāi)始
ans =
   100
>> a(2 : 3)  % 按塊訪問(wèn)
ans =
         100        1000
>> a(2 : end)
ans =
         100        1000

多維數(shù)組

  • 直接創(chuàng)建(一位數(shù)組的創(chuàng)建方式), 同行元素用空格和逗號(hào)隔開(kāi), 不同行用分號(hào)隔開(kāi)
  • 新建變量的窗口, 更改變量名, 插入數(shù)據(jù)
  • 大規(guī)模數(shù)據(jù)可以使用導(dǎo)入數(shù)據(jù)導(dǎo)入工作空間
  • 使用已有函數(shù)

常用標(biāo)準(zhǔn)數(shù)組

  • eye生成單位矩陣
  • ones生成全1數(shù)組
  • rand生成隨機(jī)數(shù)組, 服從均勻分布
  • randn生成隨機(jī)數(shù)組, 服從正態(tài)分布
  • zeros生成全0數(shù)組
  • diag生成對(duì)角矩陣
>> a = -3:3
a =
    -3    -2    -1     0     1     2     3
>> k = find(a > 0)  % 找到符合條件的下標(biāo)
k =
     5     6     7
>> sort(a)  % 對(duì)數(shù)組排序
ans =
    -3    -2    -1     0     1     2     3

字符串

字符串是用單引號(hào)括起來(lái)的一系列字符的組合

>> str = 'hello world'  % 定義字符串
str =
hello world
>> size(str)  % 查看字符串的大小
ans =
     1    11
>> u = mat2str(pi * eye(2))  % 將矩陣轉(zhuǎn)化為字符串
u =
[3.14159265358979 0;0 3.14159265358979]
>> class(u)
ans =
char
>> disp(u)  % 打印字符串
[3.14159265358979 0;0 3.14159265358979]
>> size(u)
ans =
     1    39
>> t = 23  
>> tempText = [ 'Temperature is ', num2str(t), 'C']  # 字符串的拼接, 使用num2str將數(shù)字轉(zhuǎn)換為字符串
tempText =
Temperature is 23C

關(guān)系運(yùn)算符

關(guān)系運(yùn)算符主要比較兩個(gè)同維數(shù)的數(shù)組的大小

3. 矩陣運(yùn)算


常用函數(shù)列舉

chol(A)  % 對(duì)矩陣A進(jìn)行Cholesky分解
det(A)  % 矩陣A的行列式
eig(A)  % 矩陣A的特征值和特征向量
inv(A)  % 矩陣A的逆
svd(A)  % 矩陣A的奇異值
eye(r, c)  % 生成r * c的單位矩陣
magic(n)  % 生成n*n的魔幻矩陣
ones(r, c)  % 生成r*c的全1矩陣
rand(r, c)  % 生成r*c的元素值0和1之間的隨機(jī)矩陣
zeros(r, c)  % 生成r*c的全0矩陣
cond(A)  %利用奇異值分解求矩陣A的范數(shù)

求行列式

>> for i = 1:3
A = magic(i + 2)
a(i) = det(A)  % 矩陣行列式
disp('矩陣:')  % 打印字符串 
disp(A)
disp('矩陣的行列式')
disp(a(i))
end

稀疏矩陣

>> a = [0 0 0 5; 0 1 0 0; 1 5 0 0; 0 0 0 3]
a =
     0     0     0     5
     0     1     0     0
     1     5     0     0
     0     0     0     3
>> as= sparse(a)  % 創(chuàng)建稀疏矩陣
as =
   (3,1)        1
   (2,2)        1
   (3,2)        5
   (1,4)        5
   (4,4)        3
>> af = full(as)  % 還原矩陣
af =
     0     0     0     5
     0     1     0     0
     1     5     0     0
     0     0     0     3

線性方程組

恰定方程組是方程組個(gè)數(shù)和未知數(shù)個(gè)數(shù)相同的方程組, 使用左除求解.

4. MatLab編程基礎(chǔ)

Matlab可以像C一樣編程, 編寫(xiě)執(zhí)行命令的腳本和函數(shù)功能的模塊, 文件以.m為后綴

打開(kāi)M文件編輯器:

  1. 新建->腳本
  2. 在命令行輸入edit命令, 或者edit filename命令
% 一個(gè)簡(jiǎn)單的腳本文件
echo on % 腳本文件內(nèi)容顯示在命令窗口
t = 0 : pi/20 : 2 *pi;
num = input('輸入數(shù)字:');  % 提示用戶(hù)輸入內(nèi)容
disp(num);  % 顯示結(jié)果
echo off  %關(guān)閉命令行顯示

流程控制

for循環(huán)

for x = array  % x為循環(huán)變量, array是條件數(shù)組
    commands  % 循環(huán)執(zhí)行的代碼
end

% example
for i = 1: 1: 10
    a(i) = sin(i * pi /5)
end
a  % 輸入a

while循環(huán)

while expression
    commands
end

% example
num = 10;
while num >1
    num = num / 2
end

if條件結(jié)構(gòu)

if expression 
    commands
elseif 
    commands
else
    commands
end

switch分支選擇結(jié)構(gòu)

switch expression
    case test_expression1
        commands1
    case test_expression2
        commands2
    otherwise
        commands3
end

% example
x = input('輸入需要換算的長(zhǎng)度數(shù)值cm:');
unit = input('選擇轉(zhuǎn)換單位 (1 in, 2 ft, 3 m. 4 mm, 5 cm):');
switch unit
    case {'inch', 'in', 1}
        y = x * 2.54;
    case {'feel', 'ft', 2}
        y = x * 2.54 / 12;
    case {'meter', 'm', 3}
        y = x / 100;
    case {'centermeter', 'cm', 4}
        y = x;
    case {'milimeter', 'mm', 5}
        y = x * 10;
    otherwise
        disp('Unkonwn Units');
        y = NaN;
end
disp(y)

try-catch結(jié)構(gòu)

try用于捕獲try后語(yǔ)句的異常, 交給catch語(yǔ)句處理異常

try 
    commands
catch 
    commands
end

% example
x = rand(4 ,2)
y = magic(3)
try
    z = x * y
catch 
    z = NaN
    disp('兩矩陣維數(shù)不同, 計(jì)算錯(cuò)誤!')
end
disp(lasterr)
disp(lasterror)

continue,break,return關(guān)鍵字的應(yīng)用場(chǎng)景與其他語(yǔ)言基本相同

M函數(shù)文件

M函數(shù)文件與M腳本文件的不同:

  • M函數(shù)文件第一行必須是function引導(dǎo)的聲明語(yǔ)句, 成為函數(shù)聲明行
  • 函數(shù)執(zhí)行中, 函數(shù)體內(nèi)變量臨時(shí)建立工作區(qū), 稱(chēng)為函數(shù)工作區(qū)
  • M函數(shù)文件可以調(diào)用M腳本文件
  • M函數(shù)文件中可以創(chuàng)建一個(gè)或多個(gè)函數(shù)

繪制函數(shù)y=e^{x/3}sinex(x)在區(qū)間[0, 4π]的曲線

function y = sinex(x)
% sinex.m
y = exp(-x / 3).*sin(3 * x)

% 命令行調(diào)用函數(shù)
>> fh  = @sinex
>> ezplot(fh, [0, 4 * pi, -1, 1]);

5. 幫助


Matlab所有函數(shù)都有詳細(xì)的幫助文檔, 通過(guò)一下的方式可以更好的使用文檔:

  • 命令行輸入doc functionname(完整的文檔)
  • 輸出functionname(程序進(jìn)進(jìn)行智能文檔提示(速度慢)
  • 命令行輸入help mean(簡(jiǎn)單的文檔)

6. 參考鏈接


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末叉橱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子者蠕,更是在濱河造成了極大的恐慌窃祝,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件踱侣,死亡現(xiàn)場(chǎng)離奇詭異粪小,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)泻仙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén)糕再,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人玉转,你說(shuō)我怎么就攤上這事突想。” “怎么了究抓?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵猾担,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我刺下,道長(zhǎng)绑嘹,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任橘茉,我火速辦了婚禮工腋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘畅卓。我一直安慰自己擅腰,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布翁潘。 她就那樣靜靜地躺著趁冈,像睡著了一般。 火紅的嫁衣襯著肌膚如雪拜马。 梳的紋絲不亂的頭發(fā)上渗勘,一...
    開(kāi)封第一講書(shū)人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音俩莽,去河邊找鬼旺坠。 笑死玫恳,一個(gè)胖子當(dāng)著我的面吹牛诵叁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播啦鸣,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蝉衣!你這毒婦竟也來(lái)了括尸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤病毡,失蹤者是張志新(化名)和其女友劉穎濒翻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體啦膜,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡有送,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了僧家。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片雀摘。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖八拱,靈堂內(nèi)的尸體忽然破棺而出阵赠,到底是詐尸還是另有隱情,我是刑警寧澤肌稻,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布清蚀,位于F島的核電站,受9級(jí)特大地震影響爹谭,放射性物質(zhì)發(fā)生泄漏枷邪。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一诺凡、第九天 我趴在偏房一處隱蔽的房頂上張望东揣。 院中可真熱鬧,春花似錦腹泌、人聲如沸救斑。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至穷娱,卻和暖如春绑蔫,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背泵额。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工配深, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人嫁盲。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓篓叶,卻偏偏與公主長(zhǎng)得像烈掠,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子缸托,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容