免職聲明:本網站為公益性網站,部分信息來自網絡,如果涉及貴網站的知識產權,請及時反饋,我們承諾第一時間刪除!
This website is a public welfare website, part of the information from the Internet, if it involves the intellectual property rights of your website, please timely feedback, we promise to delete the first time.
電話Tel: 19550540085: QQ號: 929496072 or 郵箱Email: Lng@vip.qq.com
摘要:Matlab中有15種基本數據類型,主要是整型、浮點、邏輯、字符、日期和時間、結構數組、單元格數組以及函數句柄等。Matlab主要數據類型的結構圖如下所失:1.整型整型:通過intmax(class)和intmin(class) 函數返回該類整型的最大值和最小值,例如intmax(‘int8’)=1272...
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’實際上是一個1行9列向量。構成矩陣或向量的行字符串長度必須相同?梢允褂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’,日期序列數如729300(0000年1月1日為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,訪問其中第7行1至25列數據可以使用命令: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,字段使用每個學生的名稱命名,分別為wang和chen,每個學生下面包含名為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 =@functionname 可以創建函數句柄,例如trigFun=@sin,或匿名函數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)
|