完成功能下:

C++中产生一个256X256大小的数组A;现在要在这个数组显示为一个灰度图像,然后把该数组里面的每一个值乘2后返回给原数组:

C++程序如下:

#include "stdafx.h"

#include

#include //memcpy()

#include "engine.h"

#include

using namespace std;

int main(int argc, char* argv[])

{

Engine *eg=NULL;

double A[256][256];

if(!(eg=engOpen(NULL))) //windows下这里的参数只能是NULL

{

MessageBox((HWND)NULL,(LPSTR)"can't start MATLAB engine",(LPSTR)"MATLAB engine",MB_OK);

}

for(int i=0;i<256;i++)

for(int j=0;j<256;j++)

A[i][j]=i; //产生数组;

mxArray *im;

im=mxCreateDoubleMatrix(256,256,mxREAL);

memcpy((void *)mxGetPr(im),(void *)A,sizeof(A));

engPutVariable(eg,"im",im);

engEvalString(eg,"im=im*2;");

engEvalString(eg,"im2=mat2gray(im)");

engEvalString(eg,"imshow(im2)");

im=engGetVariable(eg,"im");

memcpy((void *)A,(void *)mxGetPr(im),sizeof(mxGetPr(im))*256*256); //sting.h

cout<

cout<

mxDestroyArray(im);

engClose(eg);

return 0;

}

第一个memcpy函数处可以直接用sizeof(A)

但是在第二个memcpy函数处不能直接用sizeof(mxGetPr(im)),而要在后面乘上数组中的元素数目。

这里sizeof(mxGetPr(im))只是一个指针的长度(这里为4)。

更正:上面memcpy((void *)A,(void *)mxGetPr(im),sizeof(mxGetPr(im))*256*256);中的sizeof(mxGetPr(im))*256*256这里还是有问题。

这里应该用sizeof(A)或者用sizeof(im里面存储的元素型)*mxGetNumbeOfElements(im);

sizeof(A)=sizeof(A中存储的元素类型)×A中元素个数;此例中为:sizeof(A)=sizeof(double)*(256*256);

matlab mxarray赋值,C++中数组与MATLAB mxArray相互赋值相关推荐

  1. matlab在锁具装箱问题中的应用,matlab在锁具装箱问题中的应用

    matlab在锁具装箱问题中的应用 Matlab在锁具装箱问题中的应用某厂生产一种弹子锁具,每个锁具的钥匙有 5个槽,每个槽的高度从 {1, 2, 3, 4, 5, 6}6个数(单位略)中任取一个,由 ...

  2. matlab怎么输入二维数组,[转载]matlab中数组的输入

    1 matlab中数组的输入 在matlab中写数组,直接输入元素的数组,应用中括号[],成行向量时,元素之间用空格或逗号隔开,成列向量时,分列处用分号隔开,也可以对相应行向量作转置,为在中括号外加单 ...

  3. MATLAB在动态经济学中的应用,MATLAB在动态经济学中的应用

    前言 经济学家一般都认为经济系统是动态的,对经济系统进行动态分析是必要的.但由于对经济系统进行动态分析需要较多的微分方程.差分方程和现代控制理论等方面的理论分析和计算,因此长期以来在初级和中级经济学教 ...

  4. matlab在重积分计算中的应用,MATLAB在重积分计算中的应用

    第29卷第4期Vol.29NO.4 重庆工商大学学报(自然科学版) JChongqingTechnolBusinessUniv.(NatSciEd) 2012年4月Apr.2012 文章编号:1672 ...

  5. matlab在光学实验中的应用,Matlab在光学信息处理仿真实验中的应用

    收稿日期 :200402213 基金项目 :佛山科学技术学院校级科研课题经费资助 作者简介 :谢嘉宁(1971 - ) ,女 ,广东潮州人 ,佛山科学技术学院物理系讲师 ,光学工程硕士 ,主要从事光学 ...

  6. java 数组批量赋值_JAVA中数组赋值问题

    好久没有编程了,今天突然想写点程序,谁知道这个数组的赋值问题给难住了,忘了以前老师说过的,测试程序调用处理类时候,在主程序运行的空间之外又开辟了一块空间,等处理类处理完了后,在返回到主程序的运行空间. ...

  7. C/C++中的指针变量可以相互赋值,使得它们指向同一块地址空间

    两个指针变量可以相互赋值吗? int *p, *q; p=q; 这样写是什么意思?是p指向q吗? 答:1.两个指针变量之间可以相互赋值,p和q都是int类型的指针. p=q表示将q所指向的int类型变 ...

  8. 在matlab中数组运算符,matlab数组运算

    一.矩阵和数组的区别和联系 区别:1.矩阵是数学概念,而数组是计算机程序设计领域的概念 2.作为一种变换或映射符的体现,矩阵有着明确而严格的数学规则.而数组运算是matlab软件定义的规则,其目的是为 ...

  9. MATLAB怎么查找矩阵中所有0的数据并赋值

    如下矩阵中有很多的0,我想把0替换成需要的值 首先可以用find找到需要的值的index,之后直接替换即可 index = find(X4==0); X4(index)=57.71527;

最新文章

  1. 应用程序控制策略——AppLocker
  2. python 调用linux内核api_Linux系统调用及用户编程接口(API)学习
  3. java short 写法_Java Short longValue()用法及代码示例
  4. gh0st源码分析与远控的编写(二)
  5. mysql使用jtable_jtable 的简单使用
  6. 设计模式 之 建造者
  7. (递归7)生成可重集的排列
  8. 关于FD.io VPP的最新消息
  9. 如何来评测服务器性能,Web实战之:服务器性能的测量评价
  10. tex中把参考文献标题删除
  11. laravel学习笔记------Route::resource和Form-Model-Binding
  12. 苹果蓝牙耳机怎么接电话_拆解报告:高仿苹果AirPods真无线蓝牙耳机
  13. 真正靠谱免费的数据恢复软件哪个好用?
  14. 在 Linux 中如何删除分区
  15. tensorflow----tensorboard之histogram与distributions
  16. 100比例怎么用计算机算,比例尺1:100怎么算
  17. 布尔逻辑_了解Go中的布尔逻辑
  18. d3d纹理过滤器配置
  19. android6.0获取通讯录权限
  20. 四、搭建第一个直播系统

热门文章

  1. 集成学习—随机森林原理(理解与论文研读)
  2. CDH 5.15.2 离线安装
  3. iosApp上传app遇到的问题
  4. python语言字符串_python中字符串的常见操作方法
  5. 几何画板200个经典课件_2020国学起名:7部国学经典,200个大气独特的好名字
  6. 页面跳转与重定向(之二)
  7. [Ext JS 4] 实战之将chart导出为png, jpg 格式的文件
  8. h3c 链路聚合测试_4G/5G聚合路由器在直播中无线多链路聚合图传技术是什么?
  9. 超级大水题(还是自己过不了的水题)
  10. MySQL解析json字符串的相关问题