數(shù)商云價(jià)格江西seo推廣
目錄
1.變量(數(shù)據(jù))類(lèi)型轉(zhuǎn)換
?1.1 字符
?1.2 字符串
1.3 邏輯操作與賦值
2.Struct結(jié)構(gòu)體數(shù)組
2.1函數(shù)的詳細(xì)介紹:
2.1.1?cell2struct
?2.1.1.1 垂直維度轉(zhuǎn)換
?2.1.1.2 水平維度轉(zhuǎn)換
2.1.1.3 部分進(jìn)行轉(zhuǎn)換
2.1.2 rmfield
2.1.3 fieldnames(查看結(jié)構(gòu)體中的屬性值)
3. 嵌套結(jié)構(gòu)
4.Cell元胞數(shù)組
?4.1創(chuàng)建對(duì)象以及訪問(wèn)
4.2 Cell元胞數(shù)組函數(shù)
4.2.1?num2cell(轉(zhuǎn)換為相同大小的元胞數(shù)組)
4.2.2 matcell(轉(zhuǎn)換為在元胞中包含子數(shù)組的元胞數(shù)組)
5. 多維數(shù)組
?5.1 cat()函數(shù)
5.2 reshape()函數(shù)
6.文件訪問(wèn)
6.1 save()
6.2 load()
7.Excel文件讀取
7.1 xlsread()
?7.2 xlswrite()
7.3 低級(jí)文件的輸入/輸出
1.變量(數(shù)據(jù))類(lèi)型轉(zhuǎn)換
double() | 轉(zhuǎn)換為雙精度 |
single() | 轉(zhuǎn)換為單精度 |
int8() | 轉(zhuǎn)換為8位有符號(hào)整數(shù) |
int16() | 轉(zhuǎn)換為16位有符號(hào)整數(shù) |
int32() | 轉(zhuǎn)換為32位有符號(hào)整數(shù) |
int64() | 轉(zhuǎn)換為64位有符號(hào)整數(shù) |
uint8() | 轉(zhuǎn)換為8位無(wú)符號(hào)整數(shù) |
uint16() | 轉(zhuǎn)換為16位無(wú)符號(hào)整數(shù) |
uint32() | 轉(zhuǎn)換為32位無(wú)符號(hào)整數(shù) |
uint64() | 轉(zhuǎn)換為64位無(wú)符號(hào)整數(shù) |
在Matlab中我們可以直接對(duì)類(lèi)型進(jìn)行轉(zhuǎn)換:
?1.1 字符
? ? ? ?在Matlab中,字符是由引號(hào)(單引號(hào)或者雙引號(hào))括起來(lái)的表達(dá)式,字符可以包含字母、數(shù)字、符號(hào)和空格,用于表示文本數(shù)據(jù),每一個(gè)字符都對(duì)應(yīng)著一個(gè)ASSCII碼值
?1.2 字符串
? ? ? ?在MATLAB中,字符串是由引號(hào)(單引號(hào)或雙引號(hào))括起來(lái)的字符序列。字符串可以包含字母、數(shù)字、符號(hào)和空格,用于表示文本數(shù)據(jù)。
?我們?cè)谇懊嬷v過(guò)怎么將矩陣進(jìn)行合并,今天我們?cè)囍鴮⒆址M(jìn)行拼接:
- 用方括號(hào)進(jìn)行拼接
水平拼接:
>> s1='Lingda's1 ='Lingda'>> s2='lisi's2 ='lisi'>> s3=[s1,s2]s3 ='Lingdalisi'
?垂直拼接:
? ? ? ?顯然這種方式是錯(cuò)誤的,因?yàn)閮蓚€(gè)字符串的長(zhǎng)度不一致,故維度不一致,這種拼接的方式僅限于長(zhǎng)度一致的字符串才可以進(jìn)行拼接
>> s3=[s1;s1]s3 =2×6 char 數(shù)組'Lingda''Lingda'
- 用函數(shù)進(jìn)行拼接
垂直拼接:
>> s3=vertcat(s1,s1)s3 =2×6 char 數(shù)組'Lingda''Lingda'
水平拼接:
>> s3=horzcat(s1,s1)s3 ='LingdaLingda'>> s3=horzcat(s1,s2)s3 ='Lingdalisi'
1.3 邏輯操作與賦值
在數(shù)組中每個(gè)位置代表的著一個(gè)對(duì)應(yīng)的索引,字符串也不例外,一個(gè)單個(gè)的字符也對(duì)應(yīng)著一個(gè)索引
>> str='aadfgtaad'str ='aadfgtaad'>> str(3)ans ='d'
在Matlab中索引的位置是從1開(kāi)始的,所以索引為3的位置上是'd'
假設(shè)我們要尋找字符為'a'的索引有哪些?該怎么去找呢?
>> 'a'==strans =1×9 logical 數(shù)組1 1 0 0 0 0 1 1 0>> str=='a'ans =1×9 logical 數(shù)組1 1 0 0 0 0 1 1 0
這種查找方法,如果匹配的話,索引位置上為1,不匹配的話為0
如果我們需要對(duì)兩個(gè)字符串進(jìn)行比較,我們需要用strcmp()函數(shù)
>> help strcmp
strcmp - 比較字符串此 MATLAB 函數(shù) 比較 s1 和 s2,如果二者相同,則返回 1 (true),否則返回 0(false)。如果文本的大小和內(nèi)容相同,則它們將視為相等。返回結(jié)果 tf 的數(shù)據(jù)類(lèi)型為 logical。tf = strcmp(s1,s2)
>> s1='happy's1 ='happy'>> s2='happy's2 ='happy'>> strcmp(s1,s2)ans =logical1
如何去反轉(zhuǎn)一個(gè)字符串:
%方法一:
>> s1='I like beautiful gril's1 ='I like beautiful gril'>> s2=s1(size(s1,2):-1:1)s2 ='lirg lufituaeb ekil I'
%方法二:
>> s2=s1(length(s1):-1:1)s2 ='lirg lufituaeb ekil I'%方法三:>> help reverse
reverse - 反轉(zhuǎn)字符串中的字符順序此 MATLAB 函數(shù) 反轉(zhuǎn) str 中字符的順序。newStr = reverse(str)
>> reverse(s1)ans ='lirg lufituaeb ekil I'
%方法四:
>> help flip
flip - 翻轉(zhuǎn)元素順序此 MATLAB 函數(shù) 返回的數(shù)組 B 具有與 A 相同的大小,但元素順序已反轉(zhuǎn)。B 中重新排序的維度取決于 A 的形狀:B = flip(A)B = flip(A,dim)
>> flip(s2)ans ='I like beautiful gril'
2.Struct結(jié)構(gòu)體數(shù)組
? ? ? ?在MATLAB中,結(jié)構(gòu)體是一種用于存儲(chǔ)和組織數(shù)據(jù)的數(shù)據(jù)類(lèi)型。結(jié)構(gòu)體由多個(gè)字段組成,每個(gè)字段都可以存儲(chǔ)不同類(lèi)型的數(shù)據(jù)。
以下是一些關(guān)于結(jié)構(gòu)體的基本操作:
- 創(chuàng)建結(jié)構(gòu)體:
s.field1 = value1;
s.field2 = value2;
- 訪問(wèn)結(jié)構(gòu)體字段:
value = s.field;
- 更新結(jié)構(gòu)體字段的值:
s.field = new_value;
- 刪除結(jié)構(gòu)體字段:
s = rmfield(s, 'field');
- 檢查結(jié)構(gòu)體是否包含某個(gè)字段:
isfield(s, 'field');
- 獲取結(jié)構(gòu)體的字段名稱(chēng):
field_names = fieldnames(s);
- 創(chuàng)建結(jié)構(gòu)體數(shù)組:
s(1).field = value1;
s(2).field = value2;
- 訪問(wèn)結(jié)構(gòu)體數(shù)組的元素:
value = s(index).field;
? ? ? ?對(duì)Java了解過(guò)的同學(xué)很容易將結(jié)構(gòu)體將Java中的類(lèi)想在一起,兩者都是可以存儲(chǔ)不同數(shù)據(jù),對(duì)象以及屬性
讓我們接下來(lái)手動(dòng)創(chuàng)建一個(gè)結(jié)構(gòu)體:
>> student.name='Linda';
>> student.id=16;
>> student.number=2009014034;
>> student.grades=[80 70 60;50 90 70]student = 包含以下字段的 struct:name: 'Linda'id: 16number: 2.0090e+09grades: [2×3 double]
我們可以通過(guò) . 的方式拿到結(jié)構(gòu)體中的特定值
>> student.gradesans =80 70 6050 90 70
>> student.nameans ='Linda'
? ? ? ?那么結(jié)構(gòu)體中是不是只允許有一個(gè)數(shù)據(jù)呢?NONONO,當(dāng)然不是,只是我們需要和第一種數(shù)據(jù)做區(qū)分而已
>> student(2).name='Lisi';%用(number)進(jìn)行區(qū)分
student(2).id=18;
student(2).number=2009014036;
>> student(2).grades=[90 50 60;40 80 60]student = 包含以下字段的 1×2 struct 數(shù)組:nameidnumbergrades
>> student(2)ans = 包含以下字段的 struct:name: 'Lisi'id: 18number: 2.0090e+09grades: [2×3 double]>> student(1)ans = 包含以下字段的 struct:name: 'Linda'id: 16number: 2.0090e+09grades: [2×3 double]
cell2struct | 將單元格數(shù)組轉(zhuǎn)換為結(jié)構(gòu)數(shù)組 |
fieldnames | 結(jié)構(gòu)的字段名或?qū)ο蟮墓沧侄?/td> |
getfield | 結(jié)構(gòu)體數(shù)組字段 |
isfield | 確定輸入是否為結(jié)構(gòu)體數(shù)組字段 |
isstruct | 確定輸入是否為結(jié)構(gòu)數(shù)組 |
orderfields | 結(jié)構(gòu)數(shù)組的順序字段 |
rmfield | 從結(jié)構(gòu)中刪除字段 |
setfield | 給結(jié)構(gòu)數(shù)組字段賦值 |
struct | 創(chuàng)建結(jié)構(gòu)數(shù)組 |
struct2cell | 將結(jié)構(gòu)轉(zhuǎn)換為單元格數(shù)組 |
structfun | 對(duì)標(biāo)量結(jié)構(gòu)的每個(gè)域應(yīng)用函數(shù) |
2.1函數(shù)的詳細(xì)介紹:
2.1.1?cell2struct
structArray?=?cell2struct(cellArray,?fields,?dim)
%structArray = cell2struct(cellArray, fields, dim) 通過(guò)元胞數(shù)組 cellArray 中包含的信息創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組 structArray。%fields 參數(shù)指定結(jié)構(gòu)體數(shù)組的字段名稱(chēng)。此參數(shù)是一個(gè)字符數(shù)組、字符向量元胞數(shù)組或字符串?dāng)?shù)組。%dim 參數(shù)向 MATLAB? 指示創(chuàng)建結(jié)構(gòu)體數(shù)組時(shí)要使用的元胞數(shù)組的軸。使用數(shù)值 double 指定 dim。
案例:
?創(chuàng)建初始元胞數(shù)組employees:
>> devel = {{'Lee','Reed','Hill'}, {'Dean','Frye'}, ...{'Lane','Fox','King'}};
sales = {{'Howe','Burns'}, {'Kirby','Ford'}, {'Hall'}};
mgmt = {{'Price'}, {'Clark','Shea'}, {'Sims'}};
qual = {{'Bates','Gray'}, {'Nash'}, {'Kay','Chase'}};
docu = {{'Lloyd','Young'}, {'Ryan','Hart','Roy'}, {'Marsh'}};
>> employees = [devel; sales; mgmt; qual; docu]employees =5×3 cell 數(shù)組{1×3 cell} {1×2 cell} {1×3 cell}{1×2 cell} {1×2 cell} {1×1 cell}{1×1 cell} {1×2 cell} {1×1 cell}{1×2 cell} {1×1 cell} {1×2 cell}{1×2 cell} {1×3 cell} {1×1 cell}
?2.1.1.1 垂直維度轉(zhuǎn)換
?將元胞數(shù)組轉(zhuǎn)換為沿維度1(垂直維度)的結(jié)構(gòu)體:
?我們需要自定義垂直維度中的每行的標(biāo)題:
>> rowTitles={'development', 'sales', 'management','quality', 'documentation'}rowTitles =1×5 cell 數(shù)組{'development'} {'sales'} {'management'} {'quality'} {'documentation'}
將元胞數(shù)組轉(zhuǎn)換為于此維度相關(guān)的結(jié)構(gòu)體數(shù)組dept:
>> depts = cell2struct(employees, rowTitles, 1)depts = 包含以下字段的 3×1 struct 數(shù)組:developmentsalesmanagementqualitydocumentation
查找特定數(shù)值:
>> depts(2:3).development%先確定行再確定哪個(gè)屬性ans =1×2 cell 數(shù)組{'Dean'} {'Frye'}ans =1×3 cell 數(shù)組{'Lane'} {'Fox'} {'King'}
?2.1.1.2 水平維度轉(zhuǎn)換
將元胞數(shù)組轉(zhuǎn)換為沿維度2(水平維度)的結(jié)構(gòu)體:
??我們需要自定義水平維度中的每行的標(biāo)題:
>> colHeadings = {'fiveYears' 'tenYears' 'fifteenYears'}colHeadings =1×3 cell 數(shù)組{'fiveYears'} {'tenYears'} {'fifteenYears'}
將元胞數(shù)組轉(zhuǎn)換為于此維度相關(guān)的結(jié)構(gòu)體數(shù)組dept:
>> years = cell2struct(employees, colHeadings, 2)years = 包含以下字段的 5×1 struct 數(shù)組:fiveYearstenYearsfifteenYears
使用列向結(jié)構(gòu)體時(shí),將顯示已在公司工作至少 5 年的銷(xiāo)售和文件部門(mén)的員工數(shù)
[~, sales_5years, ~, ~, docu_5years] = years.fiveYearssales_5years =1×2 cell 數(shù)組{'Howe'} {'Burns'}docu_5years =1×2 cell 數(shù)組{'Lloyd'} {'Young'}
在上方進(jìn)行查找的時(shí)候,將不需要的列用占位符進(jìn)行占位,不然會(huì)造成錯(cuò)誤:
[ sales_5years, docu_5years] = years.fiveYearssales_5years =1×3 cell 數(shù)組{'Lee'} {'Reed'} {'Hill'}docu_5years =1×2 cell 數(shù)組{'Howe'} {'Burns'}
2.1.1.3 部分進(jìn)行轉(zhuǎn)換
如果我們僅僅要轉(zhuǎn)換元胞數(shù)組的第一行和最后一行,我們?cè)撛趺床僮髂?#xff1f;
>> rowTitlesOnly={'develop','document'}rowTitlesOnly =1×2 cell 數(shù)組{'develop'} {'document'}>> depts=cell2struct(employees([1,5],:),rowTitlesOnly,1)depts = 包含以下字段的 3×1 struct 數(shù)組:developdocument
?如果我們想知道結(jié)構(gòu)體中有哪些人員,我們只需要這樣就可以解決:
>> for k=1:3depts(k,:)
endans = 包含以下字段的 struct:develop: {'Lee' 'Reed' 'Hill'}document: {'Lloyd' 'Young'}ans = 包含以下字段的 struct:develop: {'Dean' 'Frye'}document: {'Ryan' 'Hart' 'Roy'}ans = 包含以下字段的 struct:develop: {'Lane' 'Fox' 'King'}document: {'Marsh'}
2.1.2 rmfield
刪除結(jié)構(gòu)體中的某些字段
>> deptsdepts = 包含以下字段的 3×1 struct 數(shù)組:developdocument
>> rmfield(depts,'develop')ans = 包含以下字段的 3×1 struct 數(shù)組:document
2.1.3 fieldnames(查看結(jié)構(gòu)體中的屬性值)
>> fieldnames(depts)ans =2×1 cell 數(shù)組{'develop' }{'document'}
3. 嵌套結(jié)構(gòu)
? ? ? ? Matlab中的嵌套結(jié)構(gòu)是指在一個(gè)結(jié)構(gòu)體中嵌套另一個(gè)結(jié)構(gòu)體。通過(guò)這種方式,可以創(chuàng)建更復(fù)雜的數(shù)據(jù)結(jié)構(gòu),以便更好地組織和管理數(shù)據(jù)。嵌套結(jié)構(gòu)可以通過(guò)使用點(diǎn)運(yùn)算符來(lái)訪問(wèn)內(nèi)部結(jié)構(gòu)體的字段。
>> A = struct('data', [3 4 7; 8 0 1], 'nest', ...
struct('testnum', 'Test 1', ...
'xdata', [4 2 8],'ydata', [7 1 6]));
A(2).data = [9 3 2; 7 6 5];
A(2).nest.testnum = 'Test 2';
A(2).nest.xdata = [3 4 2];
A(2).nest.ydata = [5 0 9];
A.nestans = 包含以下字段的 struct:testnum: 'Test 1'xdata: [4 2 8]ydata: [7 1 6]ans = 包含以下字段的 struct:testnum: 'Test 2'xdata: [3 4 2]ydata: [5 0 9]
>> A(1).dataans =3 4 78 0 1>> A(2).dataans =9 3 27 6 5>> A(1).nest.testnum%結(jié)構(gòu)體中的結(jié)構(gòu)體ans ='Test 1'
4.Cell元胞數(shù)組
- 存儲(chǔ)異構(gòu)數(shù)據(jù)的另外一種方法
- 類(lèi)似于矩陣,但是每個(gè)條目包含不同類(lèi)型的數(shù)據(jù)
- 通過(guò)將索引括在圓括號(hào)()中可以引用元胞集,使得花括號(hào){}進(jìn)行索引來(lái)訪問(wèn)元胞的內(nèi)容
?4.1創(chuàng)建對(duì)象以及訪問(wèn)
方法一:
>> A(1,1)={[1 4 3; 0 5 8; 7 2 9]};
A(1,2)={'Anne Smith'};
A(2,1)={3+7i};
A(2,2)={-pi:pi:pi};
AA =2×2 cell 數(shù)組{3×3 double } {'Anne Smith'}{[3.0000 + 7.0000i]} {1×3 double }
方法二:
>> A{1,1}=[1 4 3; 0 5 8; 7 2 9];
A{1,2}='Anne Smith';
A{2,1}=3+7i;
A{2,2}=-pi:pi:pi;
AA =2×2 cell 數(shù)組{3×3 double } {'Anne Smith'}{[3.0000 + 7.0000i]} {1×3 double }
為什么Cell元胞數(shù)組能精確的找到對(duì)應(yīng)的值呢?
- 單元格數(shù)組中的每個(gè)條目都持有一個(gè)指向數(shù)據(jù)結(jié)構(gòu)的指針
- 同一單元陣列的不同單元可以指向不同類(lèi)型的數(shù)據(jù)結(jié)構(gòu)
>> C=A(1,1)C =1×1 cell 數(shù)組{3×3 double}>> C=A{1,1}%{}顯示具體的元素C =1 4 30 5 87 2 9
4.2 Cell元胞數(shù)組函數(shù)
cell | 創(chuàng)建單元陣列 |
cell2mat | 將元胞數(shù)組轉(zhuǎn)換為基礎(chǔ)數(shù)據(jù)類(lèi)型的普通數(shù)組 |
cell2struct | 將元胞數(shù)組轉(zhuǎn)換為結(jié)構(gòu)體數(shù)組 |
celldisp | 顯示元胞數(shù)組的內(nèi)容 |
cellfun | 對(duì)元胞數(shù)組中的每個(gè)元胞應(yīng)用函數(shù) |
cellplot | 以圖的方式顯示元胞數(shù)組的結(jié)構(gòu)體 |
cellstr | 轉(zhuǎn)換為字符向量元胞數(shù)組 |
iscell | 確定輸入是否為元胞數(shù)組 |
mat2cell | 將數(shù)組轉(zhuǎn)換為在元胞中包含子數(shù)組的元胞數(shù)組 |
num2cell | 將數(shù)組轉(zhuǎn)換為相同大小的元胞數(shù)組 |
struct2cell | 將結(jié)構(gòu)體轉(zhuǎn)換為元胞數(shù)組 |
4.2.1?num2cell(轉(zhuǎn)換為相同大小的元胞數(shù)組)
%C = num2cell(A) 通過(guò)將 A 的每個(gè)元素放置于 C 的一個(gè)單獨(dú)元胞中,來(lái)將數(shù)組 A 轉(zhuǎn)換為元胞數(shù)組 C。num2cell 函數(shù)轉(zhuǎn)換具有任意數(shù)據(jù)類(lèi)型(甚至是非數(shù)值類(lèi)型)的數(shù)組。
C = num2cell(A)
%C = num2cell(A,dim) 將 A 的內(nèi)容劃分成 C 中單獨(dú)的元胞,其中 dim 指定每個(gè)元胞包含 A 的哪個(gè)維度。
C = num2cell(A,dim)
?案例實(shí)現(xiàn):
%數(shù)字元胞數(shù)組
>> a=magic(3)a =8 1 63 5 74 9 2>> C=num2cell(a)C =3×3 cell 數(shù)組{[8]} {[1]} {[6]}{[3]} {[5]} {[7]}{[4]} {[9]} {[2]}
%字符串元胞數(shù)組
>> a = ['four';'five';'nine']a =3×4 char 數(shù)組'four''five''nine'>> c = num2cell(a)c =3×4 cell 數(shù)組{'f'} {'o'} {'u'} {'r'}{'f'} {'i'} {'v'} {'e'}{'n'} {'i'} {'n'} {'e'}
4.2.2 matcell(轉(zhuǎn)換為在元胞中包含子數(shù)組的元胞數(shù)組)
%C = mat2cell(A,dim1Dist,...,dimNDist) 將數(shù)組 A 劃分為更小的數(shù)組,并在元胞數(shù)組 C 中返回它們。向量 dim1Dist,...dimNDist 指定如何劃分 A 的行、列和(如果適用)更高維度。C 中較小的數(shù)組可以具有不同大小。A 可以包含任何數(shù)據(jù)類(lèi)型。
C = mat2cell(A,dim1Dist,...,dimNDist)
%C = mat2cell(A,rowDist) 將數(shù)組 A 劃分為一個(gè) n×1 元胞數(shù)組 C,其中 n 等于 rowDist 中元素的數(shù)量。
C = mat2cell(A,rowDist)
例如:如果A是60*50數(shù)組,則可以將此參數(shù)指定為[10 20 30],[25 25]來(lái)劃分A,如上圖:
>> A=rand(60,50);
>> C=mat2cell(A,[10 20 30],[25 25])C =3×2 cell 數(shù)組{10×25 double} {10×25 double}{20×25 double} {20×25 double}{30×25 double} {30×25 double}
? ? ? ? 對(duì)于?A
?的第?K
?個(gè)維度,在指定對(duì)應(yīng)向量?dimKDist
?的元素時(shí),需滿足?sum(dimKDist)
?等于第?K
?個(gè)維度的大小,如果?A
?的第?K
?個(gè)維度的大小為零,則應(yīng)將對(duì)應(yīng)向量?dimKDist
?指定為空數(shù)組?[]
,如代碼中所示。
>> A = rand(3,0,4);
C = mat2cell(A,[1 2],[],[2 1 1])C =空的 2×0×3 cell 數(shù)組
5. 多維數(shù)組
?5.1 cat()函數(shù)
>> A=[1 2;3 4]; B=[5 6;7 8];
>> C=cat(1,A,B)C =1 23 45 67 8>> C=cat(2,A,B)C =1 2 5 63 4 7 8>> C=cat(3,A,B)C(:,:,1) =1 23 4C(:,:,2) =5 67 8
5.2 reshape()函數(shù)
%B = reshape(A,sz) 使用大小向量 sz 重構(gòu) A 以定義 size(B)。例如,reshape(A,[2,3]) 將 A 重構(gòu)為一個(gè) 2×3 矩陣。sz 必須至少包含 2 個(gè)元素,prod(sz) 必須與 numel(A) 相同。
B = reshape(A,sz)
%B = reshape(A,sz1,...,szN) 將 A 重構(gòu)為一個(gè) sz1×...×szN 數(shù)組,其中 sz1,...,szN 指示每個(gè)維度的大小??梢灾付?[] 的單個(gè)維度大小,以便自動(dòng)計(jì)算維度大小,以使 B 中的元素?cái)?shù)與 A 中的元素?cái)?shù)相匹配。例如,如果 A 是一個(gè) 10×10 矩陣,則 reshape(A,2,2,[]) 將 A 的 100 個(gè)元素重構(gòu)為一個(gè) 2×2×25 數(shù)組
B = reshape(A,sz1,...,szN)
>> A=[1 2 3 4 5 6 7 8 9]A =1 2 3 4 5 6 7 8 9>> B=reshape(A,[3,3])%重新分配成3*3的數(shù)組B =1 4 72 5 83 6 9
>> A=magic(4)A =16 2 3 135 11 10 89 7 6 124 14 15 1>> B=reshape(A,[],2)%可以指定 [] 的單個(gè)維度大小,以便自動(dòng)計(jì)算維度大小,以使 B 中的元素?cái)?shù)與 A 中的元素?cái)?shù)相匹配B =16 35 109 64 152 1311 87 1214 1
isinteger | 確定輸入是否為整型數(shù)組 |
islogical | 判斷輸入是否為邏輯陣列 |
isnan | 檢測(cè)非數(shù)字元素(NaN) |
isnumeric | 確定輸入是否為數(shù)字?jǐn)?shù)組 |
isprime | 檢測(cè)數(shù)組的質(zhì)數(shù)元素 |
isreal | 確定所有數(shù)組元素是否都是實(shí)數(shù) |
iscell | 確定輸入是否為元胞數(shù)組 |
ischar | 確定輸入是否為字符數(shù)組 |
isempty | 確定輸入是否為空數(shù)組 |
isequal | 確定數(shù)組在數(shù)值上是否相等 |
isfloat | 確定輸入是否為浮點(diǎn)數(shù)組 |
isglobal | 確定輸入是否是全局變量 |
ishandle | 檢測(cè)有效的圖形對(duì)象的句柄 |
isinf | 檢測(cè)數(shù)組的無(wú)限元素 |
6.文件訪問(wèn)
Matlab就相當(dāng)于是一個(gè)中間加工廠(計(jì)算),我們需要將其計(jì)算的結(jié)果保存在我們的文件中
6.1 save()
- 不加 -ascii
?
?打開(kāi)是亂碼(經(jīng)過(guò)了壓縮),這種模式的存儲(chǔ)不方便我們?nèi)藶檫M(jìn)行查看
- 加 -ascii
?這種方式的存儲(chǔ)我們比較容易識(shí)別
6.2 load()
? ? ? ?在讀取文件的時(shí)候,如果存儲(chǔ)的時(shí)候用save -ascii 的方式進(jìn)行存儲(chǔ),下載的時(shí)候同樣也需要load -ascii
7.Excel文件讀取
7.1 xlsread()
注意:所有讀取的Excel表格應(yīng)該和運(yùn)行文件在同一文件夾,在讀取的時(shí)候默認(rèn)只能讀數(shù)字部分,自動(dòng)省略字符串部分的讀取
?
?7.2 xlswrite()
我們需要將其平均值就算出來(lái)寫(xiě)出電子表格中
>> help mean
mean - 數(shù)組的均值此 MATLAB 函數(shù) 返回 A 沿大小不等于 1 的第一個(gè)數(shù)組維度的元素的均值。M = mean(A)M = mean(A,'all')M = mean(A,dim)M = mean(A,vecdim)M = mean(___,outtype)M = mean(___,nanflag)
>> M=mean(Score')'%mean是以列為單位進(jìn)行計(jì)算,我們首先對(duì)元素?cái)?shù)組取轉(zhuǎn)置,然后再進(jìn)行計(jì)算M =869885
xlswrite('Score.xlsx',M,1,'E2:E4')
?
xlswrite('Score.xlsx',{'平均值'},1,'E1')%寫(xiě)列題目
?那么我們應(yīng)該怎么在Excel表格中獲取文本呢?
>> [Score Header]=xlsread('Score.xlsx')Score =95 83 80 86100 98 96 9880 94 81 85Header =4×5 cell 數(shù)組{0×0 char} {'語(yǔ)文' } {'數(shù)學(xué)' } {'英語(yǔ)' } {'平均值' }{'小飛' } {0×0 char} {0×0 char} {0×0 char} {0×0 char}{'小劉' } {0×0 char} {0×0 char} {0×0 char} {0×0 char}{'小鵬' } {0×0 char} {0×0 char} {0×0 char} {0×0 char}
7.3 低級(jí)文件的輸入/輸出
- 在字節(jié)或字符級(jí)別讀取和寫(xiě)入文件
- 文件ID為fid
- 文件中的位置由可移動(dòng)的指針指定
函數(shù) | 描述 |
fopen | 打開(kāi)一個(gè)文件,或獲取打開(kāi)文件的信息 |
fclose | 關(guān)閉一個(gè)或所有打開(kāi)的文件 |
fscanf | 從文本文件讀取數(shù)據(jù) |
fprintf | 將數(shù)據(jù)寫(xiě)入文本文件 |
feof | 測(cè)試文件尾 |
打開(kāi)和關(guān)閉文件:
fid=fopen('[filename]','[permission]');%打開(kāi)文件
permission: 'r' 'r+' 'w' 'w+' 'a' 'a+'
'r':只讀,默認(rèn)
'w':只寫(xiě),覆蓋原內(nèi)容
'a':附加數(shù)據(jù)到文件尾部
'r+':讀與寫(xiě)
'w+':讀與寫(xiě),寫(xiě)時(shí)覆蓋原內(nèi)容
'a+':讀與寫(xiě),寫(xiě)時(shí),附加到文件尾部
status=fclose(fid);%關(guān)閉文件
案例:
將余弦值寫(xiě)入文件:
>> x=0:pi/10:pi;
y=cos(x);
fid=fopen('cos.txt','w');
for i=1:11fprintf(fid,'%5.3f %8.4f\n',x(i),y(i));
end
>> fclose(fid);
>> type cos.txt
?IO的讀寫(xiě)操作:
?讀取文件:
>> fid = fopen('Date.txt','r'); i = 1;
while ~feof(fid)
name(i,:) = fscanf(fid,'%5c',1);
year(i)= fscanf(fid,'%d',1);
no1(i) = fscanf(fid,'%d',1);
no2(i) = fscanf(fid,'%d',1);
no3(i) = fscanf(fid,'%g',1);
no4(i) = fscanf(fid,'%g\n');
i=i+1;
end
fclose(fid);