Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试

简介: Matlab+Qt开发笔记(一):matlab搭建Qt开发matlib环境以及Demo测试
+关注继续查看

前言

  做一些数据处理软件,使用matlab文件,.mat文件。


准备条件

  安装matlab2016,发现是vs 12(是vs2011版本),Qt5.9.3是支持vs 14(是vs2015版本),安装matlab2020a版本(该版本是vs 14版本的,每年matlab上半年发布a版本,下半年发布b版本)。

  安装请自行百度,下载,解压,安装都比较费时间。

  安装完后:

  image


Qt的准备条件

  (Qt5.9.3+QtCreator+msvc2015)

  挑选Qt的版本,需要支持matlab2020a的lib库的版本(vs2014版本),笔者qt5.9.3,装了VS2015,在QtCreator创建Demo工程,使用vs14版本编译,构建套如下图:

  image


引入mat到Qt工程汇总

引入mat头文件路径

  先用安装的matlab做测试,然后依赖的头文件抽出来模块化。

# 添加matlab头文件
#INCLUDEPATH += "C:/Program Files/Polyspace/R2020b/extern/include"
INCLUDEPATH += $$PWD/matlab2020b/include

引入mat库路径以及基础的两个库

  先用安装的matlab做测试,然后依赖的库文件抽出来模块化。

# 添加matlab库路径和库文件
#LIBS += -L"C:/Program Files/Polyspace/R2020b/extern/lib/win64/microsoft"
LIBS += -L$$PWD/matlab2020a/lib
#LIBS += -llibeng
LIBS += -llibmat
LIBS += -llibmx

最终的配置文件

INCLUDEPATH += $$PWD
DEPENDPATH += $$PWD

HEADERS += \
    $$PWD/MatlabManager.h

SOURCES += \
    $$PWD/MatlabManager.cpp

# 添加matlab头文件
#INCLUDEPATH += "C:/Program Files/Polyspace/R2020b/extern/include"
INCLUDEPATH += $$PWD/matlab2020b/include


# 添加matlab库路径和库文件
#LIBS += -L"C:/Program Files/Polyspace/R2020b/extern/lib/win64/microsoft"
LIBS += -L$$PWD/matlab2020b/lib
#LIBS += -llibeng
LIBS += -llibmat
LIBS += -llibmx


Demo

bool MatlabManager::openMatFile(QString filePath)
{

    MATFile *pMATFile = 0;
    LOG;
    QThread::sleep(5);

    pMATFile = matOpen(filePath.toUtf8().data(), "r");
    if(!pMATFile)
    {
        LOG << "Failed to matOpen:" << filePath;
        QMessageBox::information(0, 
                                 "Failed", 
                                 QString("Failed to open file:%1").arg(filePath));
        return false;
    }
    QMessageBox::information(0, 
                             "Succeed", 
                             QString("Succeed to open file:%1").arg(filePath));
}


Demo演示

  image


模块化

  进一步做了模块化的封装:

  image

  Mat运行环境比较麻烦,所以单独抽出来mat,运行mat需要90多MB的dll,如下图:

  image


工程模板:v1.0.0

  testMatlabDemo_工程模板_v1.0.0_基础调用matlab库成功.rar


入坑

入坑一:Qt程序运行直接宕机

问题

  编译可以通过,但是QtCreator运行就挂掉。

影响问题判断因素1

  将matlab的win64加入系统环境后,按道理QtCreator运行就不会宕机,但是仍然宕机。(此处导致浪费不少时间,也试过可能加载其他库,但是没有这些情况),如下图:

  image

  后编译运行成功后,回头使用系统路径还是不可以,但是补一个系统路径测试如下:

  image

影响问题判断因素2

  直接运行编译后的exe,qt的windeployqt打成安装包后,会提示缺少dll,缺少一个增加一个,最后不提示,也不运行,不符合一般的qt应用常理。

原因

  因为运行时,需要加载matlab的运行环境。

解决

  将matlab/bin/win64目录的dll全部拷贝到Qt项目的release文件夹:

  image

  可以运行,如下图:

  image



相关文章
|
16天前
|
机器学习/深度学习 传感器 算法
使用应用于环境振动数据的 SSI-COV 算法自动识别线状结构的模态参数附matlab代码
使用应用于环境振动数据的 SSI-COV 算法自动识别线状结构的模态参数附matlab代码
|
22天前
第1章 MATLAB R2020a概述——1.3 MATLAB R2020a的工作环境
第1章 MATLAB R2020a概述——1.3 MATLAB R2020a的工作环境
|
2月前
|
算法 定位技术
【EI复现】售电市场环境下电力用户选择售电公司行为研究(Matlab代码实现)
【EI复现】售电市场环境下电力用户选择售电公司行为研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 算法 调度
【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)
【经济调度】基于多目标宇宙优化算法优化人工神经网络环境经济调度研究(Matlab代码实现)
|
2月前
|
机器学习/深度学习 人工智能 算法
基于人工神经网络的类噪声环境声音声学识别(Matlab代码实现)
基于人工神经网络的类噪声环境声音声学识别(Matlab代码实现)
|
2月前
多速率感知环境下的状态观测器及其基于l2诱导范数的设计(Matlab代码实现)
多速率感知环境下的状态观测器及其基于l2诱导范数的设计(Matlab代码实现)
|
2月前
|
调度
分时电价环境下用户负荷需求响应分析方法(Matlab代码实现)
分时电价环境下用户负荷需求响应分析方法(Matlab代码实现)
|
3月前
|
新能源
两级电力市场环境下计及风险的省间交易商最优购电模型(Matlab代码实现)
两级电力市场环境下计及风险的省间交易商最优购电模型(Matlab代码实现)
|
3月前
|
机器学习/深度学习 算法 计算机视觉
基于复杂环境下的雷达目标检测技术(Matlab代码实现)
基于复杂环境下的雷达目标检测技术(Matlab代码实现)
|
3月前
|
算法 5G
一种用于环境声源的被动到达角(AoA)提取算法(Matlab代码实现)
一种用于环境声源的被动到达角(AoA)提取算法(Matlab代码实现)
相关产品
云迁移中心
推荐文章
更多
推荐镜像
更多