天堂888-欧美黄色小说-熟睡侵犯の奶水授乳在线-初尝情欲h名器av-亚洲天堂免费视频-日韩五十路-免费在线国产-国产又大又黄又粗-久草导航-色播导航-亚洲免费资源-熟女一区二区三区视频-亚洲美女视频在线-亚洲成人福利视频-婷婷精品在线-亚洲综合p-中文字幕 日本-亚洲骚片-亚洲自拍偷拍网-国产农村妇女精品一区二区-午夜中出-久久精品国产精品亚洲毛片-91精品毛片-99爱视频在线-狠狠操亚洲-美女让人操-里番本子纯肉侵犯肉全彩无码-999偷拍

通信工程原理之基于COM的MatIab的參數(shù)處理[3]

互聯(lián)網技術 責任編輯:liu512 2012-03-20

摘要:(3)需要重點說明的是該方法的擴展性。通常Excel文件中保存多個工作區(qū),有時用戶可能需要打開同一Excel文件中不同工作區(qū)中的數(shù)據,常規(guī)方法實現(xiàn)過于復雜,但對于本文介紹的方法可以通過修改添加幾條語句即可實現(xiàn)。首先,新建一個m文件用來處理工作區(qū)的選擇,代碼如下:function[sheet,col]=CSheetSelected(filePath)[typ,sheet]

 

(3) 需要重點說明的是該方法的擴展性。通常Excel文件中保存多個工作區(qū),有時用戶可能需要打開同一Excel文件中不同工作區(qū)中的數(shù)據,常規(guī)方法實現(xiàn)過于復雜,但對于本文介紹的方法可以通過修改添加幾條語句即可實現(xiàn)。首先,新建一個m文件用來處理工作區(qū)的選擇,代碼如下:

function [sheet,col] = CSheetSelected(filePath)

[typ, sheet] = xlsfinfo(filePath);

[row,col] = size(sheet);

由于返回值是一個cell數(shù)組,所以VC平臺要使用CStringArray數(shù)據結構保存返回值,并顯示各工作區(qū)名稱供用戶選擇。然后,通過人機交互將用戶選擇的工作區(qū)參數(shù)保存并傳遞至CExcelRead.m,通過在 CExcelRead.m增加一個工作區(qū)選擇參數(shù),并對代碼稍作修改即可。

2 二維數(shù)組參數(shù)的傳遞與輸出[2]

下面以主成分分析為例介紹基于COM的Matlab與VC混合編程中二維數(shù)組參數(shù)處理。

(1) 主成分分析pcamat.m代碼如下:

function [eigenvector,eigenvalue] = pcamat(oriData,row,column)

//在Excel讀入時已經完成了二維數(shù)組輸出的關鍵步驟,即輸出時將二維數(shù)組轉換為一維數(shù)組。但在VC平臺接收還原為二維時要注意,Matlab數(shù)組存儲方式是按列存儲,而VC平臺下數(shù)組是按行存儲,所以轉換時0~row-1為第一列,row~2*row-1為第二列,以此類推。本文輸入參數(shù)oriData是一維數(shù)組,所以要將其還原為二維數(shù)組使Matlab程序能夠正常運行,即下一行代碼所示。

oriData = reshape(oriData,row,column);

dataSTD=std(oriData,0,1); dataMean = mean(oriData);

dataSR = (oriData-dataMean(ones(row,1),:))。/dataSTD(ones(row,1),:);

[eigenvector,newdata,eigenvalue,Exa]=princomp(dataSR);

//第三行至此處均為主成分分析內容

eigenvector = reshape(eigenvector,column*column,1);

//與Excel文件讀取時類似,將二維輸出轉換為一維數(shù)組進行輸出

(2) 保存后,封裝打包為COM組件,并完成注冊等相關操作。在PCA工程對話框上添加一個名為PCATest的按鈕控件,核心代碼如下:

VARIANT oriData,row,column,eigVector,eigValue;

VariantInit(&oriData);                             //參數(shù)初始化

oriData.vt = VT_R8|VT_ARRAY;

//定義SAFEARRAY類型的一維數(shù)組

SAFEARRAYBOUND rgsadound[1];

rgsadound[0].lLbound = 0;

rgsadound[0].cElements = m_row*m_col;

oriData.parray = SafeArrayCreate(VT_R8,1,rgsadound);

oriData.parray->pvData = m_originData;

//完成相關設置后,將第一步讀入的數(shù)據錄入到oriData中,即賦給pcamat的oriData.到此完成了二維數(shù)組的傳遞

row.vt = VT_I4; col.vt = VT_I4;

row.lVal = m_row; col.lVal = m_col;

pca->pcamat(2,&eigVector,&eigValue,oriData,row,col);

memcpy(result, eigVector.parray->pvData,m_col*m_col*

sizeof(double));

綜上,二維數(shù)組參數(shù)處理就是使用reshape()函數(shù)對輸入輸出數(shù)據維數(shù)進行變換來完成操作。

[1]  [2]  [3]  [4]  [5]  

更多資料
更多課程
更多真題
溫馨提示:因考試政策、內容不斷變化與調整,本網站提供的以上信息僅供參考,如有異議,請考生以權威部門公布的內容為準!

通信工程師備考資料免費領取

去領取

專注在線職業(yè)教育25年

信息系統(tǒng)項目管理師

信息系統(tǒng)項目管理師

信息系統(tǒng)項目管理師

!
咨詢在線老師!