MatLab入門手冊

本文章采用創(chuàng)作共用版權協(xié)議, 要求署名、非商業(yè)用途和保持一致. 轉載本文章必須也遵循署名-非商業(yè)用途-保持一致的創(chuàng)作共用協(xié)議.

1. MatLab簡介和安裝


  • MatLab是綜合高性能的數值計算軟件, 集成了數值計算和可視化, 提供大量內置函數, 廣泛用于科學計算等領域.
  • Simulink是基于MatLab的框圖設計環(huán)境, 用來對各種動態(tài)系統(tǒng)進行建模, 分析和方針.
  • 學習目的: 為了完成當前作業(yè)和以為科研工作的需求

安裝包請在MatLab官網進行下載和安裝.

MatLab窗口>>

  1. 命令窗口
  2. 當前目錄
  3. 工作區(qū)

2. MatLab基礎


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

常用操作命令

  • clc 清空敏玲窗口
  • diary 日志文件命名
  • who 列出工作空間的變量
save my_var.mat  % 保存工作區(qū)變量
load my_var.mat  % 加載文件中變量到工作區(qū)

運算符號

+ - * / \ ^ '  % 加 減 矩陣乘法 右除 左除 次方 矩陣共軛轉置
.* ./ \. .^ .'  % 數組乘法 數組右除 數組左除 數組次方 矩陣轉置

>> 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  % 矩陣點乘, 矩陣對應元素位置的元素相乘
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  % 矩陣的乘方, 矩陣中每個元素二次方
d =
    64    81     9
    81    36    25
     1     1   100
>> format short, pi  % format用于更改顯示的輸出格式
ans =
    3.1416
>> format long, pi
ans =
   3.141592653589793
>> iskeyword  % 查詢關鍵字
ans = 
    'break'
    'case'
    'catch'
    'classdef'
    'continue'
    'else'
    'elseif'
    'end'
    'for'
    'function'
    'global'
    'if'
    'otherwise'
    'parfor'
    'persistent'
    'return'
    'spmd'
    'switch'
    'try'
    'while'
>> class(a)  % 獲取定義的數據類型
ans =
double
>> a = cast(a, 'uint8')  % 改變數據類型
a =
    8    9    3
    9    6    5
    1    1   10
>> class(a)
ans =
uint8

.的運算方式表示對矩陣元素的運算, 矩陣的右除是一般意義的除法, a./b = b.\a

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

變量

  • 變量名區(qū)分大小寫, 以字母開頭, 后跟字母數字下劃線

數組

數組作為Matlab存儲和運算的基本單元

數組創(chuàng)建

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

數組訪問

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

多維數組

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

常用標準數組

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

字符串

字符串是用單引號括起來的一系列字符的組合

>> str = 'hello world'  % 定義字符串
str =
hello world
>> size(str)  % 查看字符串的大小
ans =
     1    11
>> u = mat2str(pi * eye(2))  % 將矩陣轉化為字符串
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將數字轉換為字符串
tempText =
Temperature is 23C

關系運算符

關系運算符主要比較兩個同維數的數組的大小

3. 矩陣運算


常用函數列舉

chol(A)  % 對矩陣A進行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之間的隨機矩陣
zeros(r, c)  % 生成r*c的全0矩陣
cond(A)  %利用奇異值分解求矩陣A的范數

求行列式

>> 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

線性方程組

恰定方程組是方程組個數和未知數個數相同的方程組, 使用左除求解.

4. MatLab編程基礎

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

打開M文件編輯器:

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

流程控制

for循環(huán)

for x = array  % x為循環(huán)變量, array是條件數組
    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條件結構

if expression 
    commands
elseif 
    commands
else
    commands
end

switch分支選擇結構

switch expression
    case test_expression1
        commands1
    case test_expression2
        commands2
    otherwise
        commands3
end

% example
x = input('輸入需要換算的長度數值cm:');
unit = input('選擇轉換單位 (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結構

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

try 
    commands
catch 
    commands
end

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

continue,break,return關鍵字的應用場景與其他語言基本相同

M函數文件

M函數文件與M腳本文件的不同:

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

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

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


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

5. 幫助


Matlab所有函數都有詳細的幫助文檔, 通過一下的方式可以更好的使用文檔:

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

6. 參考鏈接


更多精彩可以查看個人博客-雪憶

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容