MATLAB數據分析工具箱
MATLAB工具箱主要含有的類別有:
數學類、統計與優化類、信號處理與通信類、控制系統設計與分析類、圖像處理類、測試與測量類、計算金融類、計算生物類、並行計算類、數據庫訪問與報告類、 MATLAB 代碼生成類、 MATLAB 應用發布類。
每個類別內含有一個或多個工具箱。
比如數學、統計與優化類別就包含有曲線擬合工具箱、優化工具箱、神經網絡工具箱、統計工具箱等。
MATLAB 應用發布類別主要包含MATLAB和其他語言的混合編譯、編程,包括C、C#、Java等。
MATLAB 中與數據分析及挖掘相關的工具箱,包含統計工具箱、優化工具箱、曲線擬合工具箱、神經網絡工具箱。(這里先大致寫一下,后面的文章會專門細寫的)
統計工具箱可以對數據進行組織、分析和建模,使用和統計分析、機器學習相關的算法及工具。用戶可以使用回歸以及分類分析來進行預測建模、生成隨機序列(蒙特卡羅模擬),同時可 以使用統計分析工具對數據進行前期的探索研究或者進行假設性檢驗。在分析多維數據時,統計工具箱提供連續特征選擇、主成分分析、正規化和收縮、偏最小二乘回歸分析法等工具幫助用戶篩選出對模型有重要影響的變量。該工具箱同時還提供有監督、無監督的機器學習算法,包括支持向量機(SVMs)、決策樹、K- Means、分層聚類、K近鄰聚類搜索、高斯混合、隱馬爾科夫模型等。
優化工具箱主要提供用於在滿足給定的束縛條件時尋找最優解的相關函數,主要包含線性規划、混合整數線性規划、二次規划、非線性最優化、非線性最小平方問題的求解函數。 在該工具箱中,用戶可以針對連續型、離散型問題尋求最優的解決方法,使用權衡分析法進行分析,或者在算法和應用中融合多種優化方法,從而達到較好的效果。
曲線擬合工具箱提供一個圖形用戶界面和各種函數調用接口供用戶實現數據擬合。使用該工具箱可以進行數據探索性分析、數據預處理、數據過程處理、比較分析候選模型和異常值過濾。用戶可以使用 MATLAB 庫函數提供的線性與非線性模型或者用戶自定義的方程式來進行回歸分析。該工具箱也支持無參數模型,比如樣條變換、插值以及平滑。
神經網絡工具箱提供的函數以及應用可以用於復雜的、非線性系統的建模。不僅支持前饋監督式學習、徑向基和動態網絡,同時還支持組織映射以及競爭層形式的非監督式學習。利用該工具箱,用戶可以設計、訓練、可視化以及仿真神經網絡。神經網絡工具箱的應用主要包括:回歸、分類、聚類分析、時間序列預測和動力系統建模,對應於其所包含的四個子工具箱。在處理海量數據時,還可以考慮使用數據分布式以及分布式計算功能、GPU功能以及並行計算工具箱。
數據質量分析
數據質量分析主要是檢查原始數據中是否存在臟數據,臟數據一般是指不符合要求,以及不能直接進行相應分析的數據,常見的有缺失值、異常值、不一致的值、重復數據及含有特殊符號的數據。
缺失值與異常值分析
這里,我們以餐飲銷量數據為例,檢測分析其缺失值及異常值。
%% 餐飲銷量數據缺失值及異常值檢測 clear; catering_sale = '../data/catering_sale.xls'; % 餐飲數據 index = 1; % 銷量數據所在列 %% 讀入數據 [num,txt] = xlsread(catering_sale); sales =num(2:end,index); rows = size(sales,1); %% 缺失值檢測 並打印結果 nanvalue = find(isnan( sales)); if isempty(nanvalue) % 沒有缺失值 disp('沒有缺失值!'); else rows_ = size(nanvalue,1); disp(['缺失值個數為:' num2str(rows_) ',缺失率為:' num2str(rows_/rows) ]); end %% 異常值檢測 % 箱形圖上下界 q_= prctile(sales,[25,75]); p25=q_(1,1); p75=q_(1,2); upper = p75+ 1.5*(p75-p25); lower = p25-1.5*(p75-p25); upper_indexes = sales(sales>upper); lower_indexes = sales(sales<lower); indexes =[upper_indexes;lower_indexes]; indexes = sort(indexes); % 箱形圖 figure hold on; boxplot(sales,'whisker',1.5,'outliersize',6); rows = size(indexes,1); flag =0; for i =1:rows if flag ==0 text(1+0.01,indexes(i,1),num2str(indexes(i,1))); flag=1; else text(1-0.017*length(num2str(indexes(i,1))),indexes(i,1),num2str(indexes(i,1))); flag=0; end end hold off; disp('餐飲銷量數據缺失值及異常值檢測完成!');
得到結果:
與箱形圖:
箱形圖補充:
對於箱形圖,必須要提及四分位數的概念。
人們經常會將數據划分為4個部分,每一個部分大約包含有1/4即25%的數據項。這種划分的臨界點即為四分位數。它們定義如下。
Q1=第1四分位數,即第25百分位數;Q2=第2四分位數,即第50百分位數;Q3=第3四分位數,即第75百分位數。這些可以通過箱形圖直觀的看出來。
下限 < 下四分位數 < 中位數 < 上四分位數 < 上限
箱形圖的意義:
①直觀明了地識別數據批中的異常值。
②利用箱線圖判斷數據批的偏態和尾重。
對於標准正態分布的樣本,只有極少值為異常值。異常值越多說明尾部越重,自由度越小。
③利用箱線圖比較幾批數據的形狀
同一數軸上,幾批數據的箱線圖並行排列,幾批數據的中位數、尾長、異常值、分布區間等形狀信息便昭然若揭。
缺點:
不能精確地衡量數據分布的偏態和尾重程度;對於批量比較大的數據,反映的信息更加模糊以及用中位數代表總體評價水平有一定的局限性......
從圖中可以讀出離群點(異常值),即被圈住的那些:
從箱形圖我們可以看出,超過上下界存在7個數據可能為異常值,結合具體業務,可以把865、4060.3、4065.2歸為正常值,將60、22、6607.4、9106.44歸為異常值。最后確定過濾規則為日銷量在400以下或5000以上屬於異常數據。
缺失值處理
數據清洗主要包括缺失值處理、異常值處理。
處理缺失值的方法可以分為三類:刪除記錄、數據插補和不處理。其中,插補最常用。
插補方法有:均值/中位數/眾數插補、使用固定值、最近臨插補、回歸方法、插值法。
插值法請參考另一篇blog:https://www.cnblogs.com/fangxiaoqi/p/11437444.html
下面用拉格朗日插值法與牛頓插值法對缺失值進行插補:(當然有很多更好的方法)
%% 拉格朗日插值和牛頓插值對比 clear; % 參數初始化 inputfile = '../data/catering_sale.xls' ; % 銷量數據文件 index =1; % 銷量數據所在下標 outputfile ='../tmp/sales.xls'; % 插值后數據存放 %% 讀入數據 [num,txt,raw] = xlsread(inputfile); data = num(:,index); %% 去除異常值 data = de_abnormal(data); %% 調用拉格朗日進行插值 la_data = ployinterp_column(data,'lagrange'); %% 調用牛頓算進行插值 new_data = ployinterp_column(data,'newton'); %% 結果寫入文件 rows = size(data,1); result = cell(rows+1,3); result{1,1}='原始值'; result{1,2}='拉格朗日插值'; result{1,3}='牛頓插值'; result(2:end,1)= num2cell(data); result(2:end,2)= num2cell(la_data); result(2:end,3)= num2cell(new_data); xlswrite(outputfile,result); disp('拉格朗日插值和牛頓插值結果已寫入數據文件!');
function outputdata= ployinterp_column(columndata,type) %% 針對每列進行插值 % 輸入參數說明: % columndata: 輸入的列數據,含有缺失值 % type: 'lagrange' 或'newton' % 輸出參數說明: % output: 輸出插值過的數據 %% 把輸入列數據分為非缺失值和缺失值數據 nans = isnan(columndata); % 區分columndata中為NaN的數據下標 notzeroIndexes = find(nans); % 尋找缺失值下標 %zeroIndexes = find(nans==0); % 尋找非缺失值下標 rows=size(columndata); %原始數據的行數 %currentValues=zeros(size(zeroIndexes));% 初始化當前值矩陣 for i=1:size(notzeroIndexes) pre5=findPre5(notzeroIndexes(i),columndata); last5=findLast5(notzeroIndexes(i),rows(1),columndata); [~,pre5cols]=size(pre5); [~,last5cols]=size(last5); if strcmp(type,'lagrange') missingValue=lagrange_interp([1:pre5cols,pre5cols+2:last5cols+pre5cols+1],... [pre5,last5],pre5cols+1); % 拉格朗日插值 else missingValue=newton_interp([1:pre5cols,pre5cols+2:last5cols+pre5cols+1],... [pre5,last5],pre5cols+1); % 牛頓插值 end columndata(notzeroIndexes(i),1)=missingValue; end % 返回插值后的數據 outputdata=columndata; end function pre5=findPre5(index,columndata) %% 在columndata中尋找給定下標index前面5個數值(非NaN),不足5個的按實際情況返回 if index<=0 disp('非法下標'); exit; end num=5; pre5=nan(1,5); for i=index-1:-1:1 if isnan(columndata(i))==0 % 判斷第i個值是否為NaN pre5(num)=columndata(i); num=num-1; end if num==0 % 只取前5個 break; end end pre5=pre5(~isnan(pre5)); % 去除NaN的值 end function last5=findLast5(index,rows,columndata) %% 在columndata中尋找給定下標index后面5個數值(非NaN),不足5個的按實際情況返回 if index<=0 || index>rows disp('非法下標'); exit; end num=0; last5=nan(1,5); % 初始化 for i=index+1:rows if isnan(columndata(i))==0 % 判斷第i個值是否為NaN num=num+1; last5(num)=columndata(i); end if num==5 % 只取后5個 break; end end last5=last5(~isnan(last5)); % 去除NaN的值 end
從結果中,我們可以看出,在插值前會對數據進行異常值檢測,發現的一些異常數據會定義為空缺值,也會進行補數。
異常值處理
在數據預處理時,異常值是否剔除,需要視具體情況而定,因為有些異常值可能蘊含着有用的信息。
異常值處理的常用方法有:
①刪除含有異常值的記錄
將含有異常值的記錄直接刪除這種方法簡單易行,但缺點也很明顯,在觀測值很少的情況下,刪除會導致樣本量不足,可能會改變原有的分布,從而造成分析結果不准確。
②視為缺失值
視為缺失值可以利用現有變量的信息,對異常值進行填補。
③平均值修正
④不處理
一般先分析異常值出現的可能原因,再判斷是否舍棄,如果是正確的數據,可以直接在具有異常值的數據集上進行挖掘建模。
數據特征分析
對比分析
對比分析是指把兩個相互聯系的指標進行比較,從數量上展示和說明研究對象規模的大小、水平的高低、速度的快慢,以及各種關系是否協調。特別適用於指標間的橫縱向比較、時間序列的比較分析。在對比分析中,選擇合適的對比標准是十分關鍵的步驟,選擇得合適,才能作出客觀的評價,選擇不合適,評價可能會得出錯誤的結論。
對比分析主要有以下兩種形式。
1、絕對數比較
它是利用絕對數進行對比,從而尋找差異的一種方法。
2、相對數比較
它是用兩個有聯系的指標對比計算的,用以反映客觀現象之間數量聯系程度的綜合指標,其數值表現為相對數。
由於研究目的和對比基礎不同,相對數可以分為以下幾種:
①結構相對數:將同一總體內的部分數值與全部數值對比求得比重,用以說明事物的性質、結構或質量。如居民食品支出額占消費支出總額的比重、產品合格率等。
②比例相對數:將同一總體內不同部分的數值對比,表明總體內各部分的比例關系,如人口性別比例、投資與消費比例等。
③比較相對數:將同一時期兩個性質相同的指標數值對比,說明同類現象在不同空間條件下的數量對比關系。如不同地區商品價格的對比;不同行業、不同企業間某項指標的對比等。
④強度相對數:將兩個性質不同但有一定聯系的總量指標對比,用以說明現象的強度、密度和普遍程度。如人均國內生產總值用“元/人”表示,人口密度用“人/平方公里”表示,也有用百分數或千分數表示的,如人口出生率用%。表示。
⑤計划完成程度相對數:是某一時期實際完成數與計划數進行對比,用以說明計划完成的程度。
統計量分析
用統計指標對定量數據進行統計描述,常從集中趨勢和離中趨勢兩個方面進行分析。
集中趨勢:平均水平的指標是對個體集中趨勢的度量,使用最廣泛的是均值和中位數;
離中趨勢:反映變異程度的指標則是個體離開平均水平的度量,使用較廣泛的是標准差、方差、四分位間距。
1、集中趨勢度量
①均值
原始觀察數據平均值:$$\operatorname{mean}(x)=\overline{x}=\frac{\sum x_{i}}{n}$$
加權均值:$$\operatorname{mean}(x)=\overline{x}=\frac{\sum w_{i} x_{i}}{\sum w_{i}}=\frac{w_{1} x_{1}+w_{2} x_{2}+\ldots+w_{n} x_{n}}{w_{1}+w_{2}+\dots+w_{n}}$$
為了消除少數極端值的影響,可以使用截斷均值或者中位數來度量數據的集中趨勢。
②中位數
③眾數
眾數是指數據集中出現最頻繁的值,眾數並不經常用來度量定性變量的中心位置,其更適用於定性變量。
2、離中趨勢度量
①極差
極差=最大值-最小值
②標准差
標准差度量數據偏離均值的程度
③變異系數
變異系數度量標准差相對於均值的離中趨勢,計算公式為:$$CV = \frac{s}{{\bar x}} \times 100{\rm{\% }}$$
變異系數主要用來比較兩個或多個具有不同單位或不同波動幅度的數據集的離中趨勢。
④四分位數間距
四分位數間距是上四分位數與下四分位數之差,其間包括了全部觀察值的一半,其值越大,說明數據的變異程度越大,反之說明數據的變異程度越小。
%% 餐飲銷量數據統計量分析
clear;
% 初始化參數 catering_sale = '../data/catering_sale.xls'; % 餐飲數據 index = 1; % 銷量數據所在列 %% 讀入數據 [num,txt] = xlsread(catering_sale); sales = num(2:end,index); sales = de_missing_abnormal(sales,index); %% 統計量分析 % 均值 mean_ = mean(sales); % 中位數 median_ = median(sales); % 眾數 mode_ = mode(sales); % 極差 range_ = range(sales); % 標准差 std_ = std(sales); % 變異系數 variation_ = std_/mean_; % 四分位數間距 q1 = prctile(sales,25); q3 = prctile(sales,75); distance = q3-q1; %% 打印結果 disp(['銷量數據均值:' num2str(mean_) ',中位數:' num2str(median_) ',眾數:' ... num2str(mode_) ',極差:' num2str(range_) ',標准差:' num2str(std_) ... ',變異系數:' num2str(variation_) ',四分位間距:' num2str(distance)]); disp('餐飲銷量統計量分析完成!');
function [ output ] = de_missing_abnormal( sales,index )
%% 去缺失值和異常值 % 去缺失值 nanvalue_ = ~isnan( sales(:,index)); sales =sales(nanvalue_,:); % 去缺失值 abnormalvalue_ = sales(:,index)>=400; sales = sales(abnormalvalue_,:); abnormalvalue_ = sales(:,index) <=5000; output = sales(abnormalvalue_,:); end
貢獻度分析
貢獻度分析又稱帕累托分析,原理是帕累托法則,它是指在任何特定群體中,重要的因子通常只占少數,而不重要的因子則占多數,因此只要能控制具有重要性的少數因子即能控制全局。
以餐飲系統對應的菜品盈利數據為例:
%% 菜品盈利數據 帕累托圖
clear;
% 初始化參數 dish_profit = '../data/catering_dish_profit.xls'; % 餐飲菜品盈利數據 %% 讀入數據 [num,txt,raw] = xlsread(dish_profit); %% 帕累托圖作圖 rows = size(num,1); hold on; % 計算累計系數 yy_ = cumsum(num(:,end)); yy=yy_/yy_(end)*100; [hAx,hLine1,hLine2]=plotyy(1:rows,num(:,end),1:rows,yy,'bar','plot'); set(hAx(1),'XTick',[])%去掉x軸的刻度 set(hLine1,'BarWidth',0.5); set(hAx(2), 'XTick', 1:rows); set(hAx(2),'XTickLabel',raw(2:end,2)); ylabel(hAx(1),'盈利:元') % left y-axis ylabel(hAx(2),'累計百分比:%') % right y-axis set(hLine2,'LineStyle','-') set(hLine2,'Marker','d') % 標記 80% 點 index = find(yy>=80); plot(index(1),yy(index(1))*100,'d', 'markerfacecolor', [ 1, 0, 0 ] ); text(index(1),yy(index(1))*93,[num2str(yy(index(1))) '%'] ); hold off; disp('餐飲菜品盈利數據帕累托圖作圖完成!');
相關性分析
分析連續變量之間線性相關程度的強弱,並用適當的統計指標表示出來的過程被稱為相關性分析。
1、直接繪制散點圖(最直觀判斷線性關系)
2、繪制散點圖矩陣
需要同時考慮多個變量之間的相關關系是,一一繪制其簡單散點圖會十分麻煩。此時可以利用散點圖矩陣來同時繪制各變量間的散點圖,從而快速發現多個變量間的主要相關性。
3、計算相關系數
①Pearson相關系數
皮爾森相關系數是用來反映兩個變量線性相關程度的統計量。相關系數用 r 表示,r 描述的是兩個變量間線性相關強弱的程度。r 的絕對值越大表明相關性越強。
一般用於分析兩個連續性變量之間的關系,其公式如下:
$$r = \frac{{\sum\limits_{i = 1}^n {\left( {{x_i} - \bar x} \right)} \left( {{y_i} - \bar y} \right)}}{{\sqrt {\sum\limits_{i = 1}^n {{{\left( {{x_i} - \bar x} \right)}^2}} \sum\limits_{i = 1}^n {{{\left( {{y_i} - \bar y} \right)}^2}} } }}{\rm{, - 1}} \le r \le 1$$
②Spearman秩相關系數
由於皮爾遜相關系數有兩個局限:①必須假設數據是成對地從正態分布中取得的。②數據至少在邏輯范圍內是等距的。所以,對於更一般的情況,Spearman秩相關系數更常用,而且這是一種無參檢驗方法(與分布無關)。
在統計學中,以查爾斯·斯皮爾曼命名的斯皮爾曼等級相關系數,即Spearman相關系數。經常用希臘字母p表示。它是衡量兩個變量的依賴性的非參數指標。它利用單調方程評價兩個統計變量的相關性。如果數據中沒有重復值,並且當兩個變量完全單調相關時,斯皮爾曼相關系數則為+1或-1。
Pearson線性相關系數要求連續變量的取值服從正態分布,而不服從正態分布的變量、分類或等級變量之間的關聯性可采用Spearman秩相關系數來描述,也可以理解為等級變量之間的皮爾遜相關系數。。
其計算公式為:$$ρ=1-\frac{6 \sum_{i=1}^{n}\left(R_{i}-Q_{i}\right)^{2}}{n\left(n^{2}-1\right)}$$
${R_i}$代表${x_i}$的秩次,${Q_i}$代表${y_i}$的秩次,${R_i} - {Q_i}$為${x_i},{y_i}$的秩次之差,$n$表示樣本數。
如圖,計算得到$$p = 1 - \frac{{6*(1 + 1 + 1 + 9)}}{{6*(36 - 1)}} = 0.6571$$
因為一個變量的相同的取值必須有相同的秩次,所以在計算中采用的秩次是排序后所在位置的平均值。
易知,只要兩個變量具有嚴格單調的函數關系,那么它們就是完全Spearman相關的,這與Pearson相關不同,Pearson 相關只有在變量具有線性關系時才是完全相關的。
上述兩種相關系數在實際應用計算中都要對其進行假設檢驗,使用 t 檢驗方法檢驗其顯著性水平以確定其相關程度。
研究表明,在正態分布假設下,Spearman秩相關系數與Peatson相關系數在效率上是等價的,而對於連續測量數據,更適合用Pearson相關系數來進行分析。
③判定系數
判定系數是相關系數的平方,用${r^2}$表示,用來衡量回歸方程對y的解釋程度。
判定系數的取值范圍:0≤${r^2}$≤1。
${r^2}$越接近1,表明x與y之間的相關性越強;${r^2}$越接近0,表明兩個變量之間幾乎沒有直線相關關系。
%% 餐飲銷量數據相關性分析
clear;
% 初始化參數 catering_sale = '../data/catering_sale_all.xls'; % 餐飲數據,含有其他屬性 index = 1; % 銷量數據所在列 %% 讀入數據 [num,txt] = xlsread(catering_sale); %% 相關性分析 corr_ = corr(num); %% 打印結果 rows = size(corr_,1); for i=2:rows disp(['"' txt{1,2} '"和"' txt{1,1+i} '"的相關系數為:' num2str(corr_(i,1))]); end disp('餐飲菜品日銷量相關性分析完成!');
分析這些菜品銷售量之間的相關性可以得到不同菜品之間的關系,比如是替補菜品、互補菜品或者沒有關系的菜品,為原材料采購提供參考。
從上面的結果可以看到如果顧客點了“百合醬蒸鳳爪”和點“翡翠蒸香茜餃”“金銀蒜汁蒸排骨”“香煎蘿卜糕”“鐵板酸菜豆腐”“香煎韭菜餃”等主食類的相關性比較低,反而點“樂膳真味雞”“生炒菜心”“原汁原味菜心”的相關性比較高。
MATLAB主要數據的探索函數
特征統計函數
①mean
功能:計算數據樣本的算術平均值。
使用格式:n=mean(X)
②geomean
功能:計算數據樣本的幾何平均數。
使用格式:n=geomean(X)
③var
功能:計算數據樣本的方差。
使用格式:v=var(X)
④std
功能:計算數據樣本的標准差。
使用格式:s=std(X)
⑤corr
功能:計算數據樣本的Spearman(Pearson)相關系數矩陣。
使用格式:R=corr(x,y,'name',value)
x=[1:8]'; y=[2:9]'; R=corr(x,y,'type','Spearman')
⑥cov
功能:計算數據樣本的協方差矩陣。
使用格式:R=cov(X)。
X=randn(20,5); R=cov(X)
⑦moment
功能:計算數據樣本的指定階中心距。
使用格式:m=moment(X,order) % 計算樣本X的order階次的中心距m。
X=randn(20,5); m=moment(X,2)
統計作圖函數
通過統計作圖函數繪制的圖表可以直觀地反映出數據及統計量的性質及其內在的規律,如盒圖可以表示多個樣本的均值,誤差條形圖能同時顯示下限誤差和上限誤差,最小二乘擬合曲線圖能分析兩個變量間的關系。
①plot
功能:繪制線性二維圖、折線圖。
使用格式:plot(x,y,S),S指定繪制時圖形的類型、樣式、顏色,常用的選項有:‘b’為藍色、“r’為紅色、g’為綠色、‘o’為圓圈、‘+’為加號標記、’為實線、-’為虛線。
②pie
功能:繪制餅形圖。
使用格式:pie(x),繪制矩陣x中非負數據的餅形圖。
若x中非負元素和小於1,則函數僅畫出部分餅形圖,且非負元素X(i,j)的值直接限定餅形圖中扇形的大小;
若X中非負元素和大於等於1,則非負元素X(i,j)代表餅形圖中的扇形大小通過X(i,j)/Y的大小來決定。其中,Y為矩陣X中非負元素和。
x=[1,3,1.5,4,1.5]; explode=[1,0,0,0,0]; pie(x,explode)
③hist
功能:繪制二維條形直方圖,可顯示數據的分布情形。
使用格式:N=hist(,X),把向量Y中元素分到由向量X中元素指定中心位置的條形中,且返回每一個條形中的元素個數給向量N。
x=0.05:0.1:0.55; y=[0.01,0.02,0.03,0.15,0.2,0.25,0.28,0.3,0.31,0.4,0.41,0.5]; hist(y,x)
④boxplot
功能:繪制樣本數據的箱型圖。
使用格式:boxplot(X,notch)繪制矩陣樣本X的箱型圖。
參數notch=1時,繪制矩陣樣本X的帶刻槽的凹盒圖。參量notch=0時,繪制矩陣樣本X的無刻槽的矩形箱型圖。
例如,繪制樣本數據的箱型圖,樣本由兩組正態分布的隨機數據組成,一組數據均值為4,標准差為5,另一組數據均值為8,標准差為6。
x1=normrnd(4,5,100,1); x2=normrnd(8,6,100,1); boxplot([x1,x2],1)
⑤semilogx/semilogy
功能:繪制x或y軸的對數圖形。
使用格式:semilogx(x,y),對x軸使用對數刻度(以10為底),y軸使用線性刻度,進行plot函數繪圖,等價於plot(log10(x),y)
x=0:1000; y=log(x); figure subplot(2,2,1) plot(x,y); title('semilogx原始數據圖'); subplot(2,2,3) semilogx(x,y); title('semilogx轉換圖'); x=0:0.1:10; y=exp(x); subplot(2,2,2) plot(x,y) title('seailogy 原始數據圖'); subplot(2,2,4) semilogy(x,y); title('semilogy 轉換圖');
⑥errorbar
功能:繪制誤差條形圖。
使用格式:errorbar(X,Y,L,U),繪制誤差條形圖。
參量X、Y、I、U必須為同型向量或矩陣。
若同為向量,則在點(X(i),Y(i))處畫出向下長為L(i),向上長為U(i)的誤差棒;
若同為矩陣,則在點(X(i,j),Y(i,j))處畫出向下長為L(i,j),向上長為U(i,j)的誤差棒。
X=0:pi/10:pi; Y=2*X.*sin(X); E=std(Y)*ones(size(X)); errorbar(X,Y,E,E)