文档章节

mwArray

曾劲松
 曾劲松
发布于 2016/08/10 09:06
字数 487
阅读 29
收藏 0

在vc中调用MATLAB产生的组建时,需要将vc中的参数转换成mwArray格式。

对mwArray赋值,主要包括矩阵赋值和字符串赋值。

一.矩阵赋值

<1>mwArray 定义矩阵变量

              mwArray  A(rows, cols, type)

            参数说明:

               A       : 变量名

                rows:行数

               col   :列数

               type :数t据类型

整体含义是:定义矩阵A,行数为:rows,列数为:cols,类型为:type

typedef enum  
{  
    mxUNKNOWN_CLASS = 0, //未知类型  
    mxCELL_CLASS, //细胞类型  
    mxSTRUCT_CLASS, //结构类型  
    mxLOGICAL_CLASS, //布尔类型  
    mxCHAR_CLASS,  //字符串类型  
    mxVOID_CLASS,  //void类型  
    mxDOUBLE_CLASS,   
    mxSINGLE_CLASS, //单精度浮点数  
    mxINT8_CLASS, //  
    mxUINT8_CLASS,  
    mxINT16_CLASS,  
    mxUINT16_CLASS,  
    mxINT32_CLASS,  
    mxUINT32_CLASS,  
    mxINT64_CLASS,  
    mxUINT64_CLASS,  
    mxFUNCTION_CLASS, //函数类型  
    mxOPAQUE_CLASS, //  
    mxOBJECT_CLASS  //对象类型  
}  

 

 

注: 如果参数不是矩阵,只是一个数,令 rows=1,cols=1即可。

<2>矩阵赋初值:

int a[6] = {1,2,3,4,5,6}  
mwArray A(2,3,mxINT32_CLASS);    
A.SetData(a,6); //第二个参数为要设置的数的个数,大小可设为rows*cols  


注:该过程相当于把1*6的矩阵,转化为2*3的矩阵,matlab转化顺序是,先排第一列,由上到下为a[0] a[1],然后排第二列,由上到下为a[2] a[3],即转化后的A为:

1     3      5

2     4      6

如果要使A为:

1      2     3

4      5     6

需这样赋值:

int a[6] = {1,2,3,4,5,6}  
mwArray A(3,2,mxINT32_CLASS);  //修改此处:行列数互换  
A.SetData(a,6); //第二个参数为要设置的数的个数,大小可设为rows*cols  

此时生成的A为:

1      4

2      5

3      6

该矩阵转置之后,既可以达到所需形式,转置过程可以在matlab的.m文件中添加,先修改.m,然后在生成dll、lib、h文件。

尤其是,在图像处理时,如果传递的矩阵为图像数据矩阵,要采用后一种方法赋值,否则,图像会严重变形失真。

二、字符串赋值

char str[5] = "abcd";  
//或 CString str = "abcd"  
mwArray mwA(str);  


该过程比较简单。

© 著作权归作者所有

共有 人打赏支持
曾劲松
粉丝 4
博文 200
码字总数 141434
作品 0
武汉
私信 提问
mwArray类说明

mwArray类说明 - [Matlab VC环境下编程],有需要的朋友可以参考下。 mwArray是一个C/C++类的类型,而mxArray是C语言的类的类型 1、创建mwArray阵列 mwArray() 创建空的Matlab阵列,类型为mxD...

SVD
2016/03/27
33
1
详细讲解混合编程——C++调用MATLAB程序,以及常用问题解决(附加程序演示和下载)

本篇文章主要介绍混合编程——C++调用MATLAB程序,以及常用问题解决,并给出通过测试的示例程序。 目录: C++调用MATLAB程序方法 示例程序 常用问题解决 程序下载

qq_1196581964
2018/11/22
0
0
VC调用matlab函数mclcppMlfFeval重复定义

问题背景: 用mcc -W cpplib:libname -T link:lib -v matlab_m_file.m 编译.m文件,生成vc可用的动态连接库和.h头文件,相关数据.c文件,和一个.cpp文件(m_to_cpp.cpp),该.cpp文件中.h文件...

长平狐
2012/10/08
187
0
MATLAB与C#混合编程

Matlab 数据类型与.NET 数据类型转换 by-GalaxyGap 2012-12-11 用 Matlab 写算法还是有很多优势的,具体表现在以下几个方面:1)Matlab 的内部函数是用 C 语言写的,虽然 M 语言是解释性语言,...

SVD
2016/04/06
532
6
产生的DLL (VS2005, MATLAB7.5, mwArray)

程序中使用MATLAB编译产生的DLL (VS2005, MATLAB7.5, mwArray) 最近有几个帖子都在讨论有关在C++程序中使用MATLAB编译产生的动态链接库DLL。本 来想用原来帖子中给出的m代码作为例子,无奈...

云栖希望。
2017/12/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Quartz监听器Listerner

概述 Quartz的监听器用于当任务调度中你所关注事件发生时,能够及时获取这一事件的通知。Quartz监听器主要有JobListener、TriggerListener、SchedulerListener三种,顾名思义,分别表示任务、...

大笨象会跳舞吧
19分钟前
3
0
Call exception, tries=10, retries=35, started=38348 ms ago, cancelled=false, msg=pc-node1 row

写hbase的问题,2019-01-18 23:23:28,082 | INFO | [hconnection-0x6431d54d-shared--pool2-t5] | Call exception, tries=10, retries=35, started=38348 ms ago, cancelled=false, msg=p......

stys35
22分钟前
2
0
docker 安装portainer、gogs、redis、mongodb、es、rabbitmq、mysql、jenkins、harbor

1、准备三台虚拟机ip如下 编号 Ip 1 192.168.100.101 2 192.168.100.102 3 192.168.100.103 2、镜像应用编排 192.168.100.101 主要安装系统运维相关服务 192.168.100.102 主要安装mysql、mon...

北岩
32分钟前
4
0
storm 提交任务报SocketException错误及解决办法

提交任务爆错: org.apache.storm.thrift.transport.TTransportException: java.net.SocketException: Broken pipe (Write failed) ..... Caused by: org.apache.storm.thrift.transport.TTr......

jingshishengxu
36分钟前
1
0
值得收藏:一份非常完整的MySQL规范

一、数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命...

Java干货分享
46分钟前
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部