1. 程式人生 > >matlab 在批量處理csv檔案資料的時候常用的處理函式

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、

S = regexp(str,char,'split')

其中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>
例1:設這幾個字串是以製表符分隔的,可以這樣來做:
<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>
例2:設這些字串是以一個或多個空格分隔的,可以用正則表示式來描述:
<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行