使用VC和MATCOM结合开发应用程序心得笔记

article/2025/8/18 3:51:03
使用VC和MATCOM结合开发应用程序心得笔记
1.       什么是Matcom?
MatcomMathTools公司(UPenn)开发的一个基于C++矩阵函数库Matrix的一个matlab m文件与cpp文件的转换程序。MIDEVA为他的一个集成调试编译环境(界面)。
Matcom独立于matlab之外,但需要外部的c++编译器,在安装时需要指定,否则无法工作。安装的时候需要指定matlab的位置主要是为了编译文件中需要的一些系统函数来找到路径用的。
现在MathTools公司已经被生产Matlab的MathWorks公司兼并,Matcom最后版本为4.5,之后部分matcom的内容被合并到mathworks的visual matlab中。
2.       如何在VC或C++Builder中使用matcom数学库?
        1.在Project/Add to project/选择/lib/v4500.lib或在工程设置中指定其路径。
  2.文件头写#include "matlib.h" 然后就可以用了。
3.       如何取出matcom矩阵的元素的值并交给C语言变量?
例:
     double mydata[3][3];
     dMm(amatrix);
     amatrix=rand(3);
     for(int i=1;i<;=3;i++)
        for(int j=1;j<;=3;j++)
            mydata[i-1][j-1]=amatrix.r(i,j);
      //or  mydata[i-1][j-1]=amatrix.fastindex(i,j);
     也可以用memcpy() 把amatrix.pr指针的内容读出来,交给mydata,但行列需要转置。
4.       Matcom在C++中应该怎么调用?
下面是一些常用的算术运算符在C++中函数表,     
对于多个输出的函数的使用,i_o作为分割符meshgrid(colon(0.0,1.0),colon(0.0,1.0),i_o,xi,yi);
 与matlab中的[xi,yi]=meshgrid(0:1,0:1);是等价的。
 
 
5.       如何将C语言变量转换为Mm?
 仍然使用Mm的.r()函数或者.fastindex()函数,在本节2)中的例子中把赋值语句左右两侧互换即可。A.r(i,j)=(double)mydata[j][i];
6.       使用了matcom4.5数学库的VC/C++Builder程序如何发布?
VC/CB中调用了matcom库,通过编译生成独立执行的程序,所以,不需要matlab系统,但一些必要的dll文件还是需要的,这些dll在MATCOM的安装目录下面,(在4.5版本中)大概有ago4500.dll,v4500v.dll等两个文件是必需的。
7.       安装matcom在搜索matlab路径时说找不到matcom.m,怎么办?
原因是matlab 6.x的Windows版本matlab.exe不在matlab/bin下,而在matlab/bin/win32,所以,在安装matcom时,把bin/win32/matlab.exe移动到bin/,即上移一层目录,安装matcom后,再移动回去就可以了。
其实是否安装有matlab对matcom没有什么影响,你完全可以选择没有安装matlab,仍然可以编译大多数文件。需要matlab/toolbox下的文件时,用addpath()添加路径或者拷贝到当前目录下就可以了。
8.       使用MIDEVA在编译有些工具箱和simulink的程序时出错原因:
目前MIDEVA/MATCOM仅是纯.M文件的开发平台(通俗地说是MATLAB的替代物),但MATLAB外,还有SIMULINK/STATEFLOW及其它TOOLBOX/BLOCKSET对于MIDEVA/MATCOM来说无法编译,因为MIDEVA/MATCOM是JIT机制,它不能访问MATLAB的其它工具包尤其是它们的DLL库。要是其它工具包都是纯文本的.M文件那该多好啊!不过可用出自MATHWORKS的MATLAB编译器。

http://chatgpt.dhexx.cn/article/Ib6K0FC4.shtml

相关文章

MATLAB与VC混合编程(1)

在本节中先介绍matcom&#xff0c;使得VC能调用Matlab 的M文件&#xff0c;从而实现混合编程。 Matcom是mathTools公司推出的一个能将M文件转化成相同功能C代码的工具。相比Matlab自带的编译器Compiler&#xff0c;用Matcom转化代码要简单和方便得多。以VC6.0和Matcom为例&…

利用Matcom实现基于MATLAB的混合编程

利用Matcom实现基于MATLAB的混合编程 来源: 神经网络 作者&#xff1a;AI俱乐部 网友评论 0 条 浏览次数 42 <script> remark_look(re_look.php?cid17&tid1843); </script> Matcom是mathTools公司推出的最早的Matlab到C的编译器。后来&#xff0c;由于Mathto…

深度学习(十二):Matconvnet小试牛刀与提特征

该节简单介绍一下如何使用Matconvnet的现有的模型进行图像分类实验以及提取图像对应层的特征。 先来看看如何用训练好的imagenet网络模型进行图像的预测&#xff0c;英文版的官网教程就在这里&#xff1a; http://www.vlfeat.org/matconvnet/quick/ 检测图像分类之前&#x…

项目总结四:神经风格迁移项目(Art generation with Neural Style Transfer)

1、项目介绍 神经风格转换 (NST) 是深部学习中最有趣的技术之一。它合并两个图像, 即 内容图像 C&#xff08;content image&#xff09; 和 样式图像S&#xff08;style image&#xff09;, 以生成图像 G&#xff08;generated image&#xff09;。生成的图像 G 将图像 C 的 内…

Matconvnet学习笔记

Introduction to Matconvnet MatConvNet是实现用于计算机视觉领域的卷积神经网络(CNN)的MATLAB工具箱。自从取得突破性工作以来,CNN在计算机视觉领域有一个重大影响&#xff0c;特别是图像理解&#xff0c;基本上取代了传统图像表示。有许多其他机器学习、深度学习和CNN开源库的…

20190812_解决anaconda下install库的问题

20190812_解决anaconda下install库的问题 一、起因二、开始解决三、解决方法1 创建虚拟环境2 在环境中安装库3 重新配置pycharm中的解释器4 运行5 其他 一、起因 在学习PYQT5例子时&#xff0c;需要在anaconda下使用plotly库 二、开始解决 使用&#xff1a; conda install …

matlab已停止工作 win7 64,win7系统笔记本运行软件弹出“Matlab已停止工作”的解决方法...

很多小伙伴都遇到过win7系统笔记本运行软件弹出“Matlab已停止工作”的困惑吧&#xff0c;一些朋友看过网上零散的win7系统笔记本运行软件弹出“Matlab已停止工作”的处理方法&#xff0c;并没有完完全全明白win7系统笔记本运行软件弹出“Matlab已停止工作”是如何解决的&#…

Map遍历方法及效率

在大学的时候记得学过通过迭代器进行Map的遍历&#xff0c;但是从参加工作后&#xff0c;基本都是通过for循环遍历&#xff0c;没用过迭代器&#xff0c;于是去了解了Map的几种遍历方法并通过运行测试各自的速度。 注意&#xff1a;这里只讲通过遍历同时能过获取key和value的遍…

java map集合如何遍历效率高 java中Map遍历的方式

java map集合如何遍历效率高 java中Map遍历的方式 一、前言 1、在看 《阿里巴巴java开发手册》时候&#xff0c;有一条推荐的规约&#xff1a; 【推荐】使用entrySet遍历Map类集合KV&#xff0c;而不是keySet方式进行遍历。 说明&#xff1a;keySet其实是遍历了2次&#xff0c…

【Java】Map遍历key-value的四种方法

Map遍历key-value的四种方法 &#xff08;1&#xff09;先用keySet()取出所有key值&#xff0c;再取出对应value——增强for循环遍历 &#xff08;2&#xff09;先用keySet()取出所有key值&#xff0c;再取出对应value——使用迭代器遍历 &#xff08;3&#xff09;通过entryS…

SVM——核函数

我们知道&#xff0c;SVM相对感知机而言&#xff0c;它可以解决线性不可分的问题&#xff0c;那么它是怎么解决的呢&#xff1f;它的解决思想很简单&#xff0c;就是对原始数据的维度变换&#xff0c;一般是扩维变换&#xff0c;使得原样本空间中的样本点线性不可分&#xff0c…

SVM核函数概述

特征空间的隐式映射&#xff1a;核函数 咱们首先给出核函数的来头&#xff1a;在上文中&#xff0c;我们已经了解到了SVM处理线性可分的情况&#xff0c;而对于非线性的情况&#xff0c;SVM 的处理方法是选择一个核函数 κ(⋅,⋅) &#xff0c;通过将数据映射到高维空间&#x…

聚类算法之核函数

一&#xff1a;监督学习与无监督学习 1&#xff0c;监督学习 监督学习就是人们常说的分类&#xff0c;通过训练已有样本得到一个最优模型&#xff0c;利用该模型将输入转化成输出&#xff0c;对输出进行判断&#xff0c;从而实现分类&#xff0c;也就是具有了对未知数据进行分类…

svm核函数的理解和选择

特征空间的隐式映射&#xff1a;核函数 咱们首先给出核函数的来头&#xff1a;在上文中&#xff0c;我们已经了解到了SVM处理线性可分的情况&#xff0c;而对于非线性的情况&#xff0c;SVM 的处理方法是选择一个核函数 κ(⋅,⋅) &#xff0c;通过将数据映射到高维空间&#x…

matlab rbf核函数,四类核函数(Sigmoid+RBF)

Q:有个疑问就是,模型本身不是线性的,为什么一定要先用线性模型做? A:有核函数和泰勒展开等等,可以无限逼近转化成线性? 小知识: 1.Sigmoid函数,即f(x)=1/(1+e-x)。是神经元的非线性作用函数。广泛应用在神经网络中。又叫Logistic函数。 机器学习中一个重要的预测模型逻辑…

SVM的核函数详解

文章目录 1、核函数背景核函数正式定义 2、高斯核函数2.2 参数带宽 σ \sigma σ的影响2.3高斯核函数的实际意义 2、多项式核函数4、参考资料 1、核函数背景 本文为核函数进阶教程&#xff0c;希望看文章之前最好对核函数有一些最基本的了解&#xff0c;不然有些地方可能会看不…

常见核函数

这篇博文开始的例子就很好地揭示了核函数的简单原理&#xff0c;写得很好&#xff01; 原地址&#xff1a;https://blog.csdn.net/zkq_1986/article/details/52448238 1 核函数K&#xff08;kernel function&#xff09;定义 核函数K&#xff08;kernel function&#xff09;就…

CUDA核函数

核函数是指在GPU端运行的代码&#xff0c;核函数内部主要干了什么&#xff1f;简而言之&#xff0c;就是规定GPU的各个线程访问哪个数据并执行什么计算。 文章目录 一、CUDA规范二、核函数内部线程的使用2.1 如何启动核函数 一、CUDA规范 编写核函数必须遵循CUDA规范&#xff…

SVM与核函数

文章目录 核技巧与SVM核函数本质线性可分的SVM与硬间隔最大化SVM对偶算法核技巧高斯核多种不同的核函数比较soft margin 问题核函数 核函数 核技巧与SVM SVM原本是用来解决二分类的分类模型 它和感知机不同的一点是它取到的分类器是在特征空间上的最大间隔的分类器 而为了解决…

核函数(核技巧)

核技巧Kernel trick 背景及含义&#xff1a; 对于 原始样本空间内或许不存在能正确划分两类样本的超平面 问题&#xff0c;考虑 将样本从原始空间映射到一个更高维的特征空间&#xff0c;使得样本在这个特征空间内线性可分。 令 ϕ ( x ) \phi(x) ϕ(x)表示将x映射后的特征向量…