<nav id="henky"></nav>
<li id="henky"></li>
  • <div id="henky"><span id="henky"></span></div>
    <div id="henky"><span id="henky"></span></div><li id="henky"><s id="henky"></s></li>
  • MATLAB數據類型
    責任編輯:icynet    瀏覽:2479次    時間: 2015-06-02 21:55:46      

    摘要:Matlab中有15種基本數據類型,主要是整型、浮點、邏輯、字符、日期和時間、結構數組、單元格數組以及函數句柄等。Matlab主要數據類型的結構圖如下所失:1.整型整型:通過intmax(class)和intmin(class) 函數返回該類整型的最大值和最小值,例如intmax(‘int8’)=1272...

    關鍵詞:MATLAB 數據 類型
    分享到:

    Matlab中有15種基本數據類型,主要是整型、浮點、邏輯、字符、日期和時間、結構數組、單元格數組以及函數句柄等。Matlab主要數據類型的結構圖如下所失:

    1.整型

    整型:通過intmax(class)intmin(class) 函數返回該類整型的最大值和最小值,例如intmax(‘int8’)=127

    2.浮點

    浮點數:REALMAX('double')REALMAX('single')分別返回雙精度浮點和單精度浮點的最大值,REALMIN('double')REALMIN ('single')分別返回雙精度浮點和單精度浮點的最小值。

    3.邏輯

    Logical:下例是邏輯索引在矩陣操作中的應用,將5*5矩陣中大于0.5的元素設定為0

    A = rand(5);

    A(A>0.5)=0

    4.字符

    Matlab中的輸入字符需使用單引號。字符串存儲為字符數組,每個元素占用一個ASCII字符。如日期字符:DateString=’9/16/2001’實際上是一個19列向量。構成矩陣或向量的行字符串長度必須相同。可以使用char函數構建字符數組,使用strcat函數連接字符。

    例如,命令 name =['abc' ; 'abcd'] 將觸發錯誤警告,因為兩個字符串的長度不等,此時可以通過空字符湊齊如:name =['abc ' ; 'abcd'],更簡單的辦法是使用char函數:char(‘abc’,’abcd’)Matlab自動填充空字符以使長度相等,因此字符串矩陣的列緯總是等于最長字符串的字符數,例如size(char(‘abc’,’abcd’))返回結果[2,4],即字符串’abc’實際存在的是’abc ’,此時如需提取矩陣中的某一字符元素,需要使用deblank函數移除空格如name=char(‘abc’,’abcd’); deblank(name(1,:))。此外,Matlab同時提供一種更靈活的單元格數組方法,使用函數cellstr可以將字符串數組轉換為單元格數組:

    data= char(‘abc’,’abcd’)

    length(data(1,:))  ->? 4

    cdata=cellstr(data)

    length(cdata{1})   ->?3

    常用的字符操作函數

    blanks(n)   返回n個空字符

    deblank(s)   移除字符串尾部包含的空字符

    eva l(string)   將字符串作為命令執行

    findstr(s1,s2)  搜索字符串

    ischar(s)   判斷是否字符串

    isletter(s)   判斷是否字母

    lower(s)   轉換小寫

    upper(s)   轉換大寫

    strcmp(s1,s2) 比較字符串是否相同

    strncmp(s1,s2,n) 比較字符串中的前n個字符是否相同

    strrep(s1,s2,s3)  s1中的字符s2替換為s3

    5.日期和時間

    Matlab提供三種日期格式:日期字符串如’1996-10-02’,日期序列數如729300000011日為1)以及日期向量如 1996 10 2 0 0 0,依次為年月日時分秒。

    常用的日期操作函數

    datestr(d,f)   將日期數字轉換為字符串

    datenum(str,f)  將字符串轉換為日期數字

    datevec(str)  日期字符串轉換向量

    weekday(d)   計算星期數

    eomday(yr,mth)  計算指定月份最后一天

    calendar(str)  返回日歷矩陣

    clock   當前日期和時間的日期向量

    date    當前日期字符串

    now    當前日期和時間的序列數

    6.結構

    結構是包含已命名數據容器或字段的數組。結構中的字段可以包含任何數據,例如:

    構建結構數組:賦值方法

    下面的賦值命令產生一個名為patient的結構數組,該數組包含三個字段:

    patient.name = 'John Doe';

    patient.billing = 127.00;

    patient.test = [79 75 73; 180 178 177.5; 220 210 205];

    在命令區內輸入patient可以查看結構信息:

    name: 'John Doe'

    billing: 127

    test: [3x3 double]

    繼續賦值可擴展該結構數組:

    patient(2).name = 'Ann Lane';

    patient(2).billing = 28.50;

    patient(2).test = [68 70 68; 118 118 119; 172 170 169];

    賦值后結構數組變為[1 2]

    構建結構數組:struct函數

    函數基本形式為:strArray =struct('field1',val1,'field2',val2, ...)

    例如:

    weather(1) = struct('temp', 72,'rainfall', 0.0); weather(2) =struct('temp', 71,'rainfall', 0.1);

    weather = repmat(struct('temp', 72, 'rainfall', 0.0), 1, 3);

    weather = struct('temp', {68, 80, 72}, 'rainfall', {0.2, 0.4,0.0});

    訪問結構數據

    以下都是合法的結構數組訪問命令:

    mypatients = patient(1:2)  獲取子結構數據

    mypatients(1)    訪問結構數據

    patient(2).name    訪問結構數據中的特定字段

    patient(3).test(2,2)   訪問結構數據中的特定字段(該字段為數組)

    bills = [patient.billing]   訪問多個結構

    tests = {patient(1:2).test}  提取結構數據轉換成單元格數組

    使用結構字段的動態名稱

    通過structName.(expression)可以賦予結構字段名稱并訪問數據。例如字段名為expression、結構名為structName,訪問其中第7125列數據可以使用命令:structName.(expression)(7,1:25)

    例如,存在一個學生每周成績數據結構數組,其數據通過以下方式建立:

    testscores.wang.week(1:25) = ...

    [95 89 76 82 79 92 94 92 89 81 75 93 ...

    85 84 83 86 85 90 82 82 84 79 96 88 98];

    testscores.chen.week(1:25) = ...

    [87 80 91 84 99 87 93 87 97 87 82 89 ...

    86 82 90 98 75 79 92 84 90 93 84 78 81];

    即結構名為testscores,字段使用每個學生的名稱命名,分別為wangchen,每個學生下面包含名為week的成績結構數組。

    現計算給定結構名稱、學生名稱和起止周數的平均分數。

    在命令窗口中輸入 editavgscore.m,輸入以下代碼后保存文件:

    function avg = avgscore(struct,student, first, last)

    avg = sum(struct.(student).week(first:last))/(last - first + 1);

    在命名窗口中輸入:avgscore(testscores,'chen', 7, 22) 計算學生陳從第7周到第22周的平均分數。

    添加和刪除結構字段

    命令[struct](index).(field)可添加或修改字段。如patient(2).ssn= '000-00-0000' 在結構patient中添加一個名為ssn的字段。

    刪除字段使用rmfield函數,如patient2 =rmfield(patient, 'name') 刪除name字段并產生新的結構。

    單元格數組

    單元格數組提供了不同類型數據的存儲機制,可以儲存任意類型和任意緯度的數組。

    訪問單元格數組的規則和其他數組相同,區別在于需要使用花括號{}訪問,例如A{2,5}訪問單元格數組A中的第2行第5列單元格。

    構建單元格數組:賦值方法

    使用花括號標識可直接創建單元格數組,如:

    A(1,1) = {[1 4 3; 0 5 8; 7 2 9]};

    A(1,2) = {'abcd'};

    A(2,1) = {3+7i};

    A(2,2) = {-pi:pi/10:pi};

    上述命令創建2*2的單元格數組A。繼續添加單元格元素直接使用賦值如A(2,3)={5}即可,注意需使用花括號標識。簡化的方法是結合使用花括號(單元格數組)和方括號()創建,如C = {[1 2],[3 4]; [5 6], [7 8]};

    構建單元格數組:函數方法

    Cell函數。如:

    B = cell(2, 3);

    B(1,3) = {1:3};

    訪問數據

    通過索引可直接訪問單元格數組中的數據元素,例如:

    N{1,1} = [1 2; 4 5];

    N{1,2} = 'Name';

    N{2,1} = 2-4i;

    N{2,2} = 7;

    c = N{1,2}

    d = N{1,1}(2,2)

    函數句柄

    函數句柄是用于間接調用一個函數的Matlab值或數據類型。在調用其它函數時可以傳遞函數句柄,也可在數據結構中保存函數句柄備用。通過命令形式 fhandle [email protected] 可以創建函數句柄,例如[email protected],或匿名函數sqr = @(x)x.^2;

    使用句柄調用函數的形式是fhandle(arg1, arg2, ..., argn) fhandle()(無參數)。如:

    trigFun(1)。例:

    function x = plotFHandle(fhandle, data)

    plot(data, fhandle(data))

    plotFHandle(@sin, -pi:0.01:pi)



    】【打印繁體】【投稿】 【收藏】 【推薦】 【舉報】 【評論】 【關閉】【返回頂部
    發表評論
    帳  號: 密碼: (新用戶注冊)
    驗 證 碼:
    表 情:
    內  容:
    發表評論
    用戶評價(0)

    暫時還沒有任何評論

    广西11选5