1. 程式人生 > 實用技巧 >第一章 基本的數學運算與矩陣運算

第一章 基本的數學運算與矩陣運算

第一章 基本的數學運算與矩陣運算

MATLAB官方文件

MATLAB基本語法

變數

  1. MATLAB中的變數不需要宣告

  2. 變數名區分大小寫,強調變數名長度不超過63

  3. 變數名以字母開頭,可以由字母、數字和下劃線組成,但不能使用標點

  4. MATLAB在的保留變數不適合做變數名

    • 常見的保留變數

      保留變數 含義
      ans 儲存上一條語句的運算的結果
      i、j 虛數單位
      Inf 無窮(\(∞\)
      eps 浮點相對精度,即1.0到下一個浮點數之間的距離(值為\(2.2204e\mathop{{}}\nolimits^{{-16}}\))
      NaN 非數,表示未定義或不可表示的值
      pi 圓周率
    • 可以使用\(iskeyword\)命令可以檢視MATLAB語言所有的關鍵字,這些關鍵字也不允許被用作變數名

  5. 在MATLAB中,變數的呼叫優先順序高於函式,因此變數名不應該覆蓋內建函式

    • 例如:
    cos='This string.';
    cos(8)		% 對字串進行索引取值,取第8個字元得到'r'
    
    • 若某函式被變數名所覆蓋,則呼叫clear <變數名>可以取消繫結在該函式名上的變數名

      謹慎使用clear命令,因為該命令後若不加引數,則表示清除當前工作區內的所有變數

變數型別

MATLAB中的變數型別有: logical,char

,numeric,cell,struct以及由他們組成的陣列或矩陣

  1. 整型

    • 帶符號整型
      分為帶符號8位、16位、32位、64位整型

      int8();int16();int32();int64();
      
    • 無符號整型
      分為無符號8位、16位、32位、64位整型

      uint8();uint16();uint32();uint64();
      
  2. 浮點型

    • 單精度型
      在記憶體中佔用4個位元組

      single()    %將其他型別轉換成單精度
      
    • 雙精度型
      在記憶體中佔用8個位元組,數值資料預設是double型別

      double()    %將其他型別轉換成雙精度
      
  3. 複數型

    • 分為實部和虛部,預設為雙精度型
    real()      %求複數的實部
    imag()      %求複數的虛部
    

判斷變數資料型別的函式

下列函式可以對變數型別進行判斷:

函式 作用
isinteger 判斷輸入引數是否為整型數陣列
islogical 判斷輸入引數是否為邏輯量陣列
isnumeric 判斷輸入引數是否為數值陣列
isreal 判斷輸入引數是否為實數陣列
ischar 判斷輸入引數是否為字元陣列
iscell 判斷輸入引數是否為元胞陣列
isfloat 判斷輸入陣列是否為浮點陣列
ishandle 判斷輸入陣列是否有效的圖形控制代碼
isempty 判斷輸入陣列是否為空
isprime 確定哪些陣列元素為質數
isnan 確定哪些陣列元素為NaN
isinf 確定哪些陣列元素為Inf
isequal 判斷陣列是否相等

數字型變數的顯示格式

直接定義的數字型變數,預設是以double形式儲存的

我們可以通過format <顯示格式>改變數字型變數的顯示格式

顯示格式 說明 例子
short 短定點格式.顯示小數點後4位 3.1416
long 長定點格式.對double型別變數顯示小數點後15位,對float型別變數顯示小數點後7位. 3.141592653589793
shortE 短科學計數法,顯示小數點後4位.並帶有科學計數法標記. 3.1416e+00
longE 長科學計數法.對double型別變數顯示小數點後15位,對float型別變數顯示小數點後7位.並帶有科學計數法標記. 3.141592653589793e+00
bank 銀行格式.顯示小數點後2位. 3.14
hex 十六進位制格式. 400921fb54442d18
rat 比例格式 355/113
>> x = 1.3333333333;
>> format short
>> x
x =
    1.3333
>> format shortE
>> x
x =
   1.3333e+00

MATLAB命令列

  1. 使用行尾 ; 抑制輸出: 在一行命令後使用;抑制輸出,否則運算結果將被顯示在終端上.

  2. 其他實用的命令:

    命令 作用
    clc 清除終端的輸出
    clear 清除當前工作區內所有變數
    who 以簡略格式顯示工作區內所有變數
    whos 以複雜格式顯示工作區內所有變數

MATLAB數字運算

MATLAB表示數學表示式

MATLAB常見運算子,優先順序順序(從前到後):括號()、乘方^、乘除法*,/、加減法+,-

數學表示式例子:

數學表示式 MATLAB命令
\(cos ⁡ ( ( 1 + 2 + 3 + 4 ) 3 5 ) \cos\left(\sqrt{\frac{{\left(1+2+3+4\right)}^3}{5}}\right)cos(5(1+2+3+4)3)\) cos(sqrt((1+2+3+4)^3/5))
\({sin \left( \sqrt{{ \pi }} \left) +ln \left( tan \left( 1 \left) \right) \right. \right. \right. \right. }\) sin(sqrt(pi))+log(tan(1))
\(2\mathop{{}}\nolimits^{{3.5 \times 1.7}}\) 2^(3.5*1.7)
\(e\mathop{{}}\nolimits^{{sin \left( 10 \right) }}\) exp(sin(10))

內建常用的數學函式

  1. 三角函式(正弦: sin、餘弦: cos、正切: tan、餘割: csc、正割: sec、餘切: cot等)
  • 引數分為弧度和角度,如果是角度要在函式名後加d,以示區別

    sin(pi/2)   %結果為1
    sind(90)    %結果為1
    
  1. 指數和對數函式(常用)
函式名 含義
exp 指數
log 自然對數
log10 常用對數(以 10 為底)
log2 以 2 為底的對數和浮點數分解
sqrt 平方根
  1. abs函式

    • 可以求實數的絕對值複數的模字串的ASCII碼值

      abs(-4)     %結果為4
      abs(3+4i)   %結果為5
      abs('a')    %結果為97
      
  2. 用於取整的函式

    • fix函式(fix:固定)固定取靠近0的那個整數,即捨去小數取整
    • floor函式(floor:地板)向下取整
    • ceil函式(ceil:天花板)向上取整
    • round函式按照四捨五入取整
    fix(-6.6)        %結果為-6
    fix(6.6)         %結果為6
    floor(-4.5)      %結果為-5
    floor(4.5)       %結果為4
    ceil(-3.2)       %結果為-3
    ceil(3.2)        %結果為4
    round(1.1)       %結果為1
    
  3. 其他常用函式

    • 用於求餘函式
      • rem函式,兩個引數,第一個是被求餘的數值,第二個是對什麼值求餘

        rem(6.5,5)      %結果為1.5000
        
      • 用於求素數的函式

        • siprime函式,如果是素數則返回1,不是則返回0
        %輸出1到100的素數
        x=1:100;
        k = isprime(x); %將全為0、1的數值賦值給k矩陣
        k1 = find(k);   %查詢非0值的下標並賦值給k1
        p = x(k1)       %輸出對應下標的矩陣
        

MATLAB矩陣運算

矩陣的建立

直接輸入

在MATLAB中,使用[]將待輸入的矩陣內容括起來,使用空格或逗號,分隔行內變數,使用分號分隔每一行

MATLAB命令 矩陣
[1 2 3 4] $[ 1 \ \ 2 \ \ 3 \ \ 4 ] $
[1,2,3,4] $[ 1 \ \ 2 \ \ 3 \ \ 4 ] $
[1; 2; 3; 4] \({ \left[ {{\left. \begin{array}{*{20}{l}}{1}\\{2}\\{3}\\{4}\end{array} \right] }}\right. }\)

分塊矩陣

一個大的矩陣可由多個小矩陣拼接而成

>> A = [1,2,3;4,5,6;7,8,9];
>> B = [-1,-2,-3;-4,-5,-6;-7,-8,-9];
>> C = [A,B;B,A]
C =
    1     2     3    -1    -2    -3
    4     5     6    -4    -5    -6
    7     8     9    -7    -8    -9
    -1    -2    -3     1     2     3
    -4    -5    -6     4     5     6
    -7    -8    -9     7     8     9
%建立複數矩陣
>> A = [1,2,3;4,5,6]
>> B = [4,5,6;7,8,9]
>> C = A+B*i
C =
    1.0000 + 4.0000i   2.0000 + 5.0000i   3.0000 + 6.0000i
    4.0000 + 7.0000i   5.0000 + 8.0000i   6.0000 + 9.0000i

冒號表示式

  • 格式:e1:e2:e3

    • e1:初始值

    • e2:步長,省略表示步長為1

    • e3:終止值

    • 建立一個以e1開始,e2結束,步長為e2的行向量

      >> D = 1:3:10
      D =
          1     4     7    10
      
  • linspace函式

    • 格式:linspace(a,b,n)

      • a:第一個元素
      • b:最後一個元素
      • n:元素總數,省略預設為100
      • 建立一個以a開始,b結束,共有n個數值的行向量,等間距
      >> linspace(1,pi,6)
      ans =
          1.0000    1.4283    1.8566    2.2850    2.7133    3.1416
      
  • logspace函式

    • 格式:logspace(a,b,n)

      • a:第一個元素
      • b:最後一個元素
      • n:元素總數,省略預設為100
      • 建立一個以a開始,b結束,共有n個數值的行向量,對數間隔的資料
      >> logspace(0, 2, 6)
      ans =
          1.0000    2.5119    6.3096   15.8489   39.8107  100.0000
      

定義特殊矩陣

命令 得到的結果
eye(n) 得到一個\(n\times n\)的單位矩陣
zeros(n1, n2) 得到一個\({n\mathop{{}}\nolimits_{{1}} \times n\mathop{{}}\nolimits_{{2}}}\)的全0矩陣
ones(n1, n2) 得到一個\({n\mathop{{}}\nolimits_{{1}} \times n\mathop{{}}\nolimits_{{2}}}\)的全1矩陣
diag(vector) 得到一個以向量vector中內容為對角線的對角矩陣

隨機數矩陣

命令 得到的結果
rand 均勻分佈的隨機數
randn 正態分佈的隨機數
randi 均勻分佈的偽隨機整數
randperm 整數的隨機排列

結構矩陣

  • 格式:結構矩陣元素.成員名 = 表示式

    >> a(1).x1 = 10;a(1).x2 = 'zhang';a(1).x3 = [1,2;3,4];
    >> a(2).x1 = 20;a(2).x2 = 'li';a(2).x3 = [5,6;7,8];
    >>a
    a =
        包含以下欄位的 1×2 struct 陣列:
            x1
            x2
            x3
    >> a(1)
    ans =
        包含以下欄位的 struct:
            x1: 10
            x2: 'zhang'
            x3: [2×2 double]
    >> a(2)
    ans =
        包含以下欄位的 struct:
            x1: 20
            x2: 'li'
            x3: [2×2 double]
    
  • 結構矩陣的常用函式

    函式 作用
    struct 建立結構體
    struct2cell 將結構體轉換為元胞陣列
    cell2struct 將元胞陣列轉換為結構體
    isstruct 判斷某變數是否是結構體
    structfun 對結構體的每個欄位都應用某函式
    fieldnames 獲取結構體的所有欄位名
    isfield 判斷結構體是否包含某欄位
    getfield 獲取結構體某欄位的值
    setfield 為結構體中的某欄位賦值
    rmfield 刪除結構體中的某欄位
    orderfields 為結構體欄位排序

單元矩陣(元胞陣列)

元胞陣列是一個可以容納不同型別元素的資料結構

我們可以使用{ }像定義矩陣一樣定義元胞陣列:

A = { [1 4 3; 0 5 8; 7 2 9]		'Anne Smith' ;...
3+7i		-pi:pi:pi}

有兩種方式訪問元胞陣列中的資料,分別是: 單元索引()內容索引{}.

因為元胞陣列的子集仍為元胞陣列,在索引器內容的使用,我們有必要指明我們要訪問的的是一個子元胞陣列還是元胞陣列對應區域中的內容.

  • 使用單元索引(),我們得到的是一個子元胞陣列.
  • 使用內容索引{},我們得到的是元胞陣列對應區域中的內容

詳細請閱讀Matlab幫助文件

元胞陣列的常用函式
函式 作用
cell 建立一個元胞陣列
iscell 判斷某變數是否為元胞陣列
cell2mat 將元胞陣列轉為矩陣
cell2struct 將元胞陣列轉為結構體
mat2cell 將陣列轉換為指定大小元胞陣列
num2cell 將陣列轉換為相同大小的元胞陣列
struct2cell 將結構體轉換為元胞陣列
celldisp 遞迴顯示元胞陣列中的內容
cellplot 以影象形式繪製元胞陣列的結構
cellfun 對元胞陣列的每個元胞應用某函式
高維元胞陣列

一個三維的元胞陣列可以有(row),(column),(layer)三個維度.在對元胞陣列進行索引時,優先順序從高到低的順序分別是: 行→列→層

使用cat函式可以在指定維度上對元胞陣列進行拼接

矩陣的索引

  1. MATLAB中的矩陣是以先儲存的.且索引下標從1開始

  2. 矩陣有兩種索引方式: 按一維索引和按二維索引,對於一個一般的矩陣,其索引順序如下:

    \[{ \left[ {{\left. \begin{array}{*{20}{l}} {1\text{ }\text{ }4\text{ }\text{ }7}\\ {2\text{ }\text{ }5\text{ }\text{ }8}\\ {3\text{ }\text{ }6\text{ }\text{ }9} \end{array} \right] }}\right. }or{ \left[ {{\left. \begin{array}{*{20}{l}} { \left( 1,1 \left) \text{ }\text{ } \left( 1,2 \left) \text{ }\text{ } \left( 1,3 \right) \right. \right. \right. \right. }\\ { \left( 2,1 \left) \text{ }\text{ } \left( 2,2 \left) \text{ }\text{ } \left( 2,3 \right) \right. \right. \right. \right. }\\ { \left( 3,1 \left) \text{ }\text{ } \left( 3,2 \left) \text{ }\text{ } \left( 3,3 \right) \right. \right. \right. \right. } \end{array} \right] }}\right. } \]

  3. 矩陣的索引可以使用冒號:,表示選取所有行或所有列

  4. 矩陣的索引可以是一個或兩個向量,表示選中向量內的所有行或所有列

例子:

原矩陣 索引 得到的結果 解釋
\({A\text{ }=\text{ }{ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{7\text{ }\text{ }8\text{ }\text{ }9}\end{array} \right] }}\right. }}\) A(8) \(6\) 取矩陣第8個元素
\({A\text{ }=\text{ }{ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{7\text{ }\text{ }8\text{ }\text{ }9}\end{array} \right] }}\right. }}\) A([1 3 5]) $[ 1 7 5 ] $ 分別取矩陣第[1 3 5]個元素放入新矩陣的對應位置
\({A\text{ }=\text{ }{ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{7\text{ }\text{ }8\text{ }\text{ }9}\end{array} \right] }}\right. }}\) A([1 2; 3 4]) \({ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }4}\\{7\text{ }\text{ }2}\end{array} \right] }}\right. }\) 分別取矩陣第[1 2; 3 4]個元素放入新矩陣的對應位置
\({A\text{ }=\text{ }{ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{7\text{ }\text{ }8\text{ }\text{ }9}\end{array} \right] }}\right. }}\) A(3,2) \(8\) 取矩陣第3行第2列的元素
\({A\text{ }=\text{ }{ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{7\text{ }\text{ }8\text{ }\text{ }9}\end{array} \right] }}\right. }}\) A([1,2], :) \({ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\end{array} \right] }}\right. }\) 取矩陣第[1 2]行和所有列的交叉項
\({A\text{ }=\text{ }{ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{7\text{ }\text{ }8\text{ }\text{ }9}\end{array} \right] }}\right. }}\) A([1 3], [1 2]) \({ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2}\\{7\text{ }\text{ }8}\end{array} \right] }}\right. }\) 取矩陣第[1 3]行和第[1 2]列的交叉項
  1. 序號和下標的轉換

    • sub2ind函式:將矩陣中指定元素的行列下標轉換成儲存的序號

      • 格式:D = sub2ind(S,I,J)

        • D:序號
        • S:行和列組成的向量,可用size函式獲取
        • I:轉換矩陣元素的行下標
        • J:轉換矩陣元素的列下標
        >> A = [11:13;15:17]
        A =
            11    12    13
            15    16    17
        >> D = sub2ind(size(A),[1,2;2,2],[1,1;3,2])
        %獲取(1,1)、(2,1)、(2,3)、(2,2)的序號並組成矩陣賦值給D
        D =
            1     2
            6     4
        
    • ind2sub函式:將矩陣中指定元素的序號轉換成行列下標

      • 格式:[I,J] = ind2sub(S,D)

        • I:行下標
        • J:列下標
        • S:行和列組成的向量,可用size函式獲取
        • D:序號
        >> [I,J] = ind2sub([3,3],[1,3,5])
        %獲取3x3矩陣中序號為1、3、5的行列下標
        I =
            1     3     2
        J =
            1     1     2
        %下標為(1,1)、(3,1)、(2,2)
        

矩陣的操作

運算子

運算子 操作 形式 例子
+ 矩陣與向量相加 A+b [6 3] + 2 = [8 5]
- 矩陣與向量相減 A-b [6 3] - 2 = [4 1]
+ 矩陣與矩陣對應位置相加 A+B [6 3] + [4 8] = [10 11]
- 矩陣與矩陣對應位置相減 A-B [6 3] - [4 8] = [2 -5]
* 矩陣與矩陣相乘 A*B [6 3] * [4 8]' = 48
.* 矩陣與矩陣對應位置相乘 A.*B [6 3] * [4 8] = [24 24]
/ 矩陣與矩陣右除(等價於A*inv(B)) A/B [6 3] / [4 8] = 0.6
\ 矩陣與矩陣左除(等價於inv(A)*B) A\B [6 3] / [4 8] = [0.06667 1.3333; 0 0]
./ 矩陣與矩陣對應位置右除 A./B [6 3] ./ [4 8] = [1.5 0.375]
.\ 矩陣與矩陣對應位置左除 A.\B [6 3] .\ [4 8]' = [0.6667 2.6667]
^ 矩陣與向量乘方 A^b [1 2; 3 4]^3 = [37 54; 81 118]
.^ 矩陣與矩陣對應位置乘方 A.^B [1 2; 3 4].^[1 2; 3 4] = [1 4; 27 256]

函式

對於矩陣:

\[{A\text{ }=\text{ }{ \left[ {{\left. \begin{array}{*{20}{l}}{1\text{ }\text{ }2\text{ }\text{ }3}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{7\text{ }\text{ }8\text{ }\text{ }9}\end{array} \right] }}\right. }} \]

函式 作用 例子 結果
max(A, [], dim) 獲取矩陣Adim維度上的最大值(dim=1,代表列;dim=1,代表行) max(A, [], 1) \([ 7 \ \ 8\ \ 9]\)
min(A, [], dim) 獲取矩陣Adim維度上的最小值(dim=1,代表列;dim=1,代表行) min(A, [], 2) \([ 1 \ \ 4\ \ 7]\)
sum(A, dim) 獲取矩陣Adim維度上的和 sum(A, 1) \([ 12 \ \ 15\ \ 18]\)
mean(A, dim) 獲取矩陣Adim維度上的平均值 mean(A, 1) \([4 \ \ 5\ \ 6]\)
sort(A, dim, direction) 獲取矩陣Adim維度上按direction順序排序結果('ascend' 表示升序(預設值),'descend' 表示降序) sort(A, 1, 'descend') \({ \left[ {{\left. \begin{array}{*{20}{l}}{7\text{ }\text{ }8\text{ }\text{ }9}\\{4\text{ }\text{ }5\text{ }\text{ }6}\\{1\text{ }\text{ }2\text{ }\text{ }3}\end{array} \right] }}\right. }\)
size(A, dim) 獲取矩陣Adim維度上的形狀.若不指定dim,則返回整個矩陣的形狀. size(A) \([ 3 \ \ 3 ]\)
find(A, n) 獲取矩陣An個非零元素的索引 find(A,5) \([1 \ \ 2\ \ 3\ \ 4\ \ 5]\)

改變矩陣的形狀

  1. reshape函式:在矩陣元素不變的情況下,將矩陣A重新排成mxn的矩陣

    • 只改變原矩陣的行數和列數不改變原矩陣元素的個數儲存順序
    • reshape(A,m,n)
      • A:原矩陣
      • m:行數
      • n:列數
    >> A = [1:4;5:8;9:12]
    A =
        1     2     3     4
        5     6     7     8
        9    10    11    12
    >> B = reshape(A,4,3)
    B =
        1     6    11
        5    10     4
        9     3     8
        2     7    12
    
  2. A( : ):將矩陣A堆疊成一個列向量

    >> A = [1:3;4:6]
    A =
        1     2     3
        4     5     6
    >> B = A(:)
    B =
        1
        4
        2
        5
        3
        6
    

MATLAB字元處理

字串的表示

  1. 字串是用單引號括起來的字元序列

  2. 如果字串中字元含有單引號,則該單引號字元要用兩個單引號表示

    >> 'I''m a student'
    ans =
        'I'm a student'
    
  3. 建立多行字串,形成字串矩陣

    • 多行字串的列數必須都相等,用空格調節
    %求ch的1到5位的字串、反向表示、小寫字母轉成大寫字母及ch的長度
    ch = 'ABc123Def456';
    %ch的1到5位的字串
    subch = ch(1:5);
    subch
    %反向表示
    revch = ch(end:-1:1);
    revch
    %小寫字母轉成大寫字母
    k = find(ch>='a'&ch<='z');
    ch(k) = ch(k)-('a'-'A');
    ch
    %ch的長度
    length(ch)
    %下面是結果
    subch =
        'ABc12'
    revch =
        '654feD321cBA'
    ch =
        'ABC123DEF456'
    ans =
        12
    

字串的操作

  1. 字串的執行

    格式:eval(s)

    • s:字串
    • 作用:將字串轉換成對應matlab中的命令執行
    eval('clear')	%等價於 clear 命令
    
  2. 字串與數值之間的轉換

    • abs函式和double函式:將字串轉化成對應的ASCII碼矩陣
    • char函式:將ASCII碼轉化成對應的字串矩陣
  3. 字串的比較

    • 利用關係運算
      • 兩個字串長度相等
      • 依次對對應ASCII碼進行比較
      • 結果是一個數值(0或1)向量
    • 利用字串比較函式
      • strcmp(s1,s2):比較s1和s2是否相等,結果為1或0
      • strncmp(s1,s2,n):比較兩個字串前n個字元是否相等,結果為1或0
      • strcmpi(s1,s2):比較在忽略大小寫的情況下,s1和s2是否相等,結果為1或0
      • strncmpi(s1,s2,n):比較在忽略大小寫的情況下,兩個字串前n個字元是否相等,結果為1或0
  4. 字串的查詢和替換

    • findstr(s1,s2):返回短字串在長字串中的開始的位置
    • strrep(s1,s2,s3):將s1中的子字串s2替換為字串s3

檔案讀寫

MATLAB支援的檔案型別如下:

檔案內容 副檔名 讀取檔案的函式 寫入檔案的函式
MATLAB資料 *.mat load save
Excel表格 *.xls,*.xlsx xlsread xlswrite
空格分隔的數字 *.txt load save

讀寫MATLAB格式的資料

MATLAB工作區內的資料可以以*.mat格式儲存在檔案中.使用save函式將資料存入檔案,使用load函式從檔案中讀取資料.

  • save

    函式的語法如下:

    • save(filename,variables)將變數variables以二進位制形式存入檔案中.
    • save(filename,variables,'-ascii')將變數variables以文字形式存入檔案中.
  • load

    函式的語法如下:

    • load(filename)從二進位制形式檔案中讀取資料.
    • load(filename,'-ascii')從文字形式檔案中讀取資料.

其中引數filenamevariables都是字串格式,若不指定variables引數,則將當前工作區內所有變數存入檔案中.

複雜的資料格式,如structcell,不支援以二進位制格式儲存.

讀寫Excel表格

使用xlsreadxlswrite函式可以讀寫Excel資料,語法如下:

  • 讀取Excel檔案的語法:[num,txt,raw] = xlsread(filename,sheet,xlRange)

    Score = xlsread('04Score.xlsx')
    Score = xlsread('04Score.xlsx', 'B2:D4')
    [Score Header] = xlsread('04Score.xlsx')
    
  • 寫入Excel的語法:xlswrite(filename,A,sheet,xlRange)

    M = mean(Score);
    xlswrite('04Score.xlsx', M, 1, 'E2:E4');
    xlswrite('04Score.xlsx', {'Mean'}, 1, 'E1');