當前位置:
首頁 > 最新 > 實驗數據的分析預處理及使用

實驗數據的分析預處理及使用

最近百納知識推出的MATLAB應用型案例系列公益課中的第一講:實驗數據的分析預處理及使用。

鏈接網址為:

http://v.youku.com/v_show/id_XMTYxNjEzOTMxMg==.html?qq-pf-to=pcqq.c2c

我們的系列公益課以一個完整的應用型案例貫穿式教學,通過學習,能夠獨立的完成一項應用型工作的程序編寫,能夠獨立的調試程序。

多數學生學習MATLAB都只了解具體的函數功能,當面對實際遇到的科研或工程問題,就顯得手足無措。為解決這一問題,我們特別推出MATLAB應用型案例系列公益課。每節視頻時間在30-60分鐘之間,從實戰應用的角度,本視頻以剎車油耗的實驗數據為例,以MATLAB程序分析為基礎,詳細介紹實驗數據的分析、可視化、預處理及使用,等等。通過視頻學習,幫助學員掌握實驗數據的的讀取、預處理、顯示、函數擬合重構實驗數據、以及重構函數在Simulink中的調研等的一系列應用流程,使學員掌握實驗數據處理中常用的MATLAB分析流程。

附一:

如需要本期講課的相關文件(Engine_Data_SI_NA_2L_I4電子表格、 .m源文件等),請到 http://pan.baidu.com/s/1mhT59aw 自行下載

m源文件程序

%% 清除Workspace中的所有變數

clear %清除變數

clc %清除命令行

%% 讀取引擎數據

Engine = readtable( Engine_Data_SI_NA_2L_I4.xlsx );

% Engine = readtable( Engine_Data_SI_NA_2L_I4.xls );

% Engine = readtable( Engine_Data_SI_NA_2L_I4.txt );

% readtable命令的適用範圍很廣,例如txt, dat, csv, xls, xlsb, xlsm, xlsx, xltm, xltx, ods

% 我們還可以使用其他命令,注意載入數據的格式將不是table而是矩陣

% xlsread( Engine_Data_SI_NA_2L_I4.xls , SI NA 2L I4 , , basic );

%% %% 提取我們關心的數據:引擎速度、期望引擎載荷、實際引擎載荷、引擎能耗

SP_TMP = Engine.SPEED;

LDC_TMP = Engine.LOAD_CMD;

LD_TMP = Engine.LOAD;

FC_TMP = Engine.BSFC;

%% 數據預處理

% 去掉第一行文字項

SPEED = zeros(length(SP_TMP)-1,1);

LOAD_CMD = zeros(length(LDC_TMP)-1,1);

LOAD = zeros(length(LD_TMP)-1,1);

BSFC = zeros(length(FC_TMP)-1,1);

% 轉換格式:每一行從chars->double

% 並行計算加快速度

parfor i = 2:length(SP_TMP)

TMP1 = SP_TMP(i);

SPEED(i-1) = str2double(TMP1{:}); % str2num比較慢

TMP2 = LDC_TMP(i);

LOAD_CMD(i-1) = str2double(TMP2{:});

TMP3 = LD_TMP(i);

LOAD(i-1) = str2double(TMP3{:});

TMP4 = FC_TMP(i);

BSFC(i-1) = str2double(TMP4{:});

end

% 去掉NaN項

SPEED = SPEED(~isnan(SPEED));

LOAD_CMD = LOAD_CMD(~isnan(LOAD_CMD));

LOAD = LOAD(~isnan(LOAD));

BSFC = BSFC(~isnan(BSFC));

%% 數據預處理-處理多次重複實驗數據:速度和實際載荷取平均值,能耗取最小值

LDC_UNQ = unique(LOAD_CMD);

nRuns = size(LDC_UNQ, 1);

minBSFC = zeros(nRuns, 1);

Load = zeros(nRuns, 1);

Speed = zeros(nRuns, 1);

for i = 1:nRuns

idx = LOAD_CMD == LDC_UNQ(i);

minBSFC(i) = min( BSFC(idx) );

Load(i) = mean( LOAD(idx) );

Speed(i) = mean( SPEED(idx) );

end

%% 研究一下引擎速度、引擎載荷、引擎能耗這三個變數中每兩個變數之間的對應關係

[~,AX,~,~,~] = plotmatrix([Speed,Load,minBSFC]);

xlabel(AX(3), Speed );xlabel(AX(6), Load );xlabel(AX(9), minBSFC );

ylabel(AX(1), Speed );ylabel(AX(2), Load );ylabel(AX(3), minBSFC );

%% 剔除錯誤數據並重新分析變數關係

TMP_IDX = minBSFC>0;

Speed = Speed(TMP_IDX);

Load = Load(TMP_IDX);

minBSFC = minBSFC(TMP_IDX);

[~,AX,~,~,~] = plotmatrix([Speed,Load,minBSFC]);

xlabel(AX(3), Speed );xlabel(AX(6), Load );xlabel(AX(9), minBSFC );

ylabel(AX(1), Speed );ylabel(AX(2), Load );ylabel(AX(3), minBSFC );

%% 曲面擬合

cftool(Speed, Load, minBSFC);

% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

% 自定義曲面函數為f(x,y) = k+a*exp(b*y)+c*exp(d*y)+e*x*y+f*x

% 導出擬合結果為SurfObj

% !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

%% 使用導出結果

SurfObj(3000,0.5)

plot(SurfObj)

%% 建立2D表格用於Simulink中的插值模塊

speedbreakpoints = linspace( 1000, 5500, 17 );

loadbreakpoints = linspace( 0.2, 0.8, 13 );

[tSpeed, tLoad] = meshgrid( speedbreakpoints, loadbreakpoints );

tBSFC = SurfObj(tSpeed, tLoad);

surface(tSpeed, tLoad, tBSFC);

%%

小編:三江

《百納學術》由百納公益組織創辦和運營,子斯月、王成禹、何雲飛三位熱心分享的博士生擔任主編,60餘位本碩博同學和青年老師一起帶你了解學術界發生的那些事。科研是一場美麗的冒險,《百納學術》願意做大家冒險路程中最真誠的陪伴者。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 實驗 的精彩文章:

霍金表示有些東西能夠逃脫黑洞的引力,一項實驗驗證了這一觀點
因為這個DARPA實驗室的靈魂人物,讓人類跨步進入互聯網新紀元
我與祖國共成長——市南區實驗幼兒園國慶節慶祝活動剪影
馬克思·恩斯特:不知疲倦的實驗者與發明家
世界品牌實驗室權威發布:博德四度躋身亞洲品牌500強

TAG:實驗 |