一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C/C++ - C++讀寫.mat文件的方法

C++讀寫.mat文件的方法

2020-11-18 11:02C++教程網 C/C++

本文介紹了“C++讀寫.mat文件的方法”,需要的朋友可以參考一下

最近在編寫C++程序的過程中,需要使用matlab生成的.mat文件,于是查找了基本使用方法。 

我的計算機環境是win7 64位系統,VS2010,matlab R2010b。 

一、工程配置: 
1.VC++目錄->包含目錄 添加: 
MATLAB\R2010b\extern\include 
MATLAB\R2010b\extern\include\win64 
 ->庫目錄 添加: 
  MATLAB\R2010b\extern\lib\win64\microsoft 
  MATLAB\R2010b\extern\lib\win32\microsoft 
2.C/C++->常規->附加包含目錄 添加: 
  MATLAB\R2010b\extern\include 
  MATLAB\R2010b\extern\include\win64 
3.鏈接器->輸入->附加依賴庫 添加: 
libmat.lib 
libmx.lib 
libmex.lib 
libeng.lib 

由于所安裝的matlab為64位,要調用其函數,需要將工程轉換為X64 
4.頂菜單->生成->配置管理器->平臺:X64 
5.鏈接器->高級->目標計算機: 
MachineX64(/MACHINE:X64) 

6.計算機環境變量->path 添加: 
E:\DevTools\MATLAB\R2010b\extern\lib\win64\microsoft; 
E:\DevTools\MATLAB\R2010b\bin\win64; 

二、所用到的基本讀取寫入mat文件代碼示例: 

首先需要包含頭文件: 

 

復制代碼 代碼如下:


#include <mat.h> 

 

[cpp] view plaincopy 

    MATFile *pmatFile = NULL;   
    mxArray *pMxArray = NULL;   

    // 讀取.mat文件(例:mat文件名為"initUrban.mat",其中包含"initA")   
    double *initA;   

    pmatFile = matOpen("initUrban.mat","r");   
    pMxArray = matGetVariable(pmatFile, "initA");   
    initA = (double*) mxGetData(pMxArray);   
    M = mxGetM(pMxArray);   
    N = mxGetN(pMxArray);   
    Matrix<double> A(M,N);   
    for (int i=0; i<M; i++)   
        for (int j=0; j<N; j++)   
            A[i][j] = initA[M*j+i];   

    matClose(pmatFile);   
    mxFree(initA);   

    // 生成.mat文件   
    double *outA = new double[M*N];   
        for (int i=0; i<M; i++)   
            for (int j=0; j<N; j++)   
                outA[M*j+i] = A[i][j];   
    pmatFile = matOpen("A.mat","w");   
    mxSetData(pMxArray, outA);   
    matPutVariable(pmatFile, "A", pMxArray);   
    matClose(pmatFile);   

 

 

三、程序說明 

1.使用matOpen函數打開mat文件 


MATFile *matOpen(const char *filename,const char *mode) 

mode: 
r:以只讀方式打開 
u:更新模式,可讀可寫,但是如果要打開的數據文件不存在,也不會創建新的文件 
w:以寫入方式打開,只能寫如入,如果要打開的數據文件不存在,則創建一個新的文件 


2.使用matGetVariable函數讀取mat文件中的變量 

mxArray * matGetVariable(MATFile * pMF, const char * name); 

讀取名為name的變量,返回一個數據陣列指針 


3.使用mxGetData函數獲取數據陣列中的數據 

void *mxGetData(const mxArray *pa ); 

返回時需要使用強制類型轉換。 


4.使用mxGetM和mxGetN函數獲取數據陣列矩陣的維數 

size_t mxGetM(const mxArray *pa); 

size_t mxGetN(const mxArray *pa); 


5.使用mxSetData函數將變量存入數據陣列 

void mxSetData( mxArray *pa, void  *newdata ); 


6.使用matPutVariable函數將數據陣列存入到mat文件中 

int matPutVariable(MATFile * pMF, const char * name, const mxArray * pA); 

存入成功返回0,存入出錯返回非0 


7.由于malab中矩陣的存儲是按列存儲,與c中不同,所以從mat文件中獲取的矩陣需要重新排列。生成mat文件時,同樣要注意。 

延伸 · 閱讀

精彩推薦
  • C/C++C語言中炫酷的文件操作實例詳解

    C語言中炫酷的文件操作實例詳解

    內存中的數據都是暫時的,當程序結束時,它們都將丟失,為了永久性的保存大量的數據,C語言提供了對文件的操作,這篇文章主要給大家介紹了關于C語言中文件...

    針眼_6702022-01-24
  • C/C++學習C++編程的必備軟件

    學習C++編程的必備軟件

    本文給大家分享的是作者在學習使用C++進行編程的時候所用到的一些常用的軟件,這里推薦給大家...

    謝恩銘10102021-05-08
  • C/C++c++ 單線程實現同時監聽多個端口

    c++ 單線程實現同時監聽多個端口

    這篇文章主要介紹了c++ 單線程實現同時監聽多個端口的方法,幫助大家更好的理解和學習使用c++,感興趣的朋友可以了解下...

    源之緣11542021-10-27
  • C/C++C語言實現電腦關機程序

    C語言實現電腦關機程序

    這篇文章主要為大家詳細介紹了C語言實現電腦關機程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    xiaocaidayong8482021-08-20
  • C/C++C/C++經典實例之模擬計算器示例代碼

    C/C++經典實例之模擬計算器示例代碼

    最近在看到的一個需求,本以為比較簡單,但花了不少時間,所以下面這篇文章主要給大家介紹了關于C/C++經典實例之模擬計算器的相關資料,文中通過示...

    jia150610152021-06-07
  • C/C++詳解c語言中的 strcpy和strncpy字符串函數使用

    詳解c語言中的 strcpy和strncpy字符串函數使用

    strcpy 和strcnpy函數是字符串復制函數。接下來通過本文給大家介紹c語言中的strcpy和strncpy字符串函數使用,感興趣的朋友跟隨小編要求看看吧...

    spring-go5642021-07-02
  • C/C++C++之重載 重定義與重寫用法詳解

    C++之重載 重定義與重寫用法詳解

    這篇文章主要介紹了C++之重載 重定義與重寫用法詳解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下...

    青山的青6062022-01-04
  • C/C++深入理解goto語句的替代實現方式分析

    深入理解goto語句的替代實現方式分析

    本篇文章是對goto語句的替代實現方式進行了詳細的分析介紹,需要的朋友參考下...

    C語言教程網7342020-12-03
主站蜘蛛池模板: 精选国产AV精选一区二区三区 | 91制片厂果冻传媒杨柳作品 | 国产青青草 | 日韩中文在线 | 青草草产国视频 | 韩国三级在线播放 | 我和么公的秘密小说免费 | 第一国内永久免费福利视频 | 久久综合久综合久久鬼色 | 欧美一级视 | 男人操美女视频 | 性欧洲女人18 | 亚洲第一男人网站 | 国产精品毛片va一区二区三区 | 操国产美女 | 大陆性出航 | 日韩有码| 国产伊人久久 | 国内精品久久久久影院男同志 | 热久久免费 | 韩国免费特一级毛片 | 美女禁区视频无遮挡免费看 | 国产精品区一区二区免费 | 日韩免费观看 | 四虎影在线永久免费观看 | aika跟黑人太猛了 | 海派甜心完整版在线观看 | 女bbbbxxx孕妇 | 大杳蕉在线影院在线播放 | 四虎影视免费观看免费观看 | 精品国产一区二区三区国产馆 | 国产一级一级一级成人毛片 | 日本videohd18| 我不卡影院手机在线观看 | 精品久久免费观看 | 乌克兰呦12~14 | 思思99热久久精品在2019线 | 性xx色3d动画xx无尽 | 亚洲成人aa | 青草国产福利视频免费观看 | 国产二区视频在线观看 |