matlab 在批量處理csv檔案資料的時候常用的處理函式
本篇文章中我將完成如何大批量處理csv檔案的資料。首先講解程式裡用到的函式。
在此之前,向新手科普一下matlab註釋多行的小技巧:註釋:ctrl+r 取消註釋:ctrl+t
1、str = strrep(str1, str2, str3)
用於刪掉某些不需要的符號,比如本例中我用此函式刪除了雙引號!在 str1 中找到str2 ,替換成str3
str1 = 'This is a good example.';
str2 = 'good';
str3 = 'great';
str = strrep(str1, str2,str3)
str =
This is a great example.
2、
其中str是待分割的字串,char是作為分隔符的字元(可以使用正則表示式)。分割出的結果存在S中。
以下面這樣一串字元為例
Hello Nocturne Studio
首先去除首尾的多餘空格:<span style="font-family:Microsoft YaHei;font-size:18px;">str = <span style="padding: 0px; margin: 0px; color: rgb(0, 0, 255);">deblank</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>str<span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>
<span style="font-family:Microsoft YaHei;font-size:18px;">S = regexp<span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>str, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'\t'</span>, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'split'</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>
<span style="font-family:Microsoft YaHei;font-size:18px;">S = regexp<span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>str, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'\s+'</span>, <span style="padding: 0px; margin: 0px; color: rgb(160, 32, 240);">'split'</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>這樣,S{1}=’Hello’,S{2}=’Nocturne’,S{3}=’Studio’。 注意,上面得到的結果S是一個cell型變數,它的每個元素比如S{1}仍然是cell型的,只能用來display,不能直接用來進行字串操作(比如獲取其中的某個字元),所以我們在使用需要執行一次:
<span style="font-family:Microsoft YaHei;font-size:18px;">s1 = <span style="padding: 0px; margin: 0px; color: rgb(0, 0, 255);">char</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">(</span>S<span style="padding: 0px; margin: 0px;">{</span><span style="padding: 0px; margin: 0px; color: rgb(51, 51, 255);">1}</span><span style="padding: 0px; margin: 0px; color: rgb(0, 136, 0);">)</span></span>
這樣的s1才是一個真正的字串,可以進行後續的操作。
3、sort()
B=sort(A) 對一維或二維陣列進行升序排序,並返回排序後的陣列,當A為二維時,對陣列每一列進行排序.
eg: A=[1,5,3],則sort(A)=[1,3,5]
A=[1,5,3;2,4,1],則sort(A)=[1,4,1;2,5,3]
(2)B=sort(A,dim),對陣列按指定方向進行升序排序,
dim =1,表示對每一列進行排序,,dim=2表示對每一行進行排序.
(3)B=sort(A,dim,mode),mode為指定排序模式,mode為"ascend"時,進行升序排序,為"descend "時,進行降序排序.
(4)[B,I]=sort(A,.....),I為返回的排序後元素在原陣列中的行位置或列位置.
4、mat2cell
注意如果使用cell2mat,必須注意每個cell中的資料保證一個size。
c = mat2cell(x, m, n)
x代表要進行劃分的矩陣,m劃分的列,n為劃分的行的型別。
c=mat2cell(x, [10 20 30], [25 25])
若x 為60*50的矩陣
x c
60*50 10*25 10*25
20*25 20*25
30*25 30*25
5、關於將cell的字串轉換成數字!首先可用的方法很多,網上各式各樣,找了好久發現有一個是最簡單的:
str2double(cell),而且如果你的cell是一個多維的,不用單個字串進行轉換,直接
str2double()搞定!
6、strfind()
格式:idx=strfind(a,'1');
idx返回的是元素1在陣列a中的位置。
7、刪除某元素(暴力型別)
(1)字串刪除特定的字元
name(end-3:end)=[];%將name字串最後三個字元刪除。此處注意 .(點號) 算一個字元,空格算一個字元!
(2)刪除數組裡某一行或者列
array(i,:)=[];刪除了array數組裡第i行