如何从mex函数访问matlab结构字段中的矩阵?

我试图弄清楚如何从mex函数访问存储在matlab结构中的字段中的矩阵。

那真是漫长的缠绕...让我解释一下:

我有一个定义如下的matlab结构:

matrixStruct = struct('matrix', {4, 4, 4; 5, 5, 5; 6, 6 ,6}) 我有一个mex函数,在其中我希望能够收到指向矩阵中第一个元素的指针(用c表示的矩阵[0] [0]),但是我一直无法弄清楚该怎么做那。

我尝试了以下方法:

/* Pointer to the first element in the matrix (supposedly)... */ double *ptr = mxGetPr(mxGetField(prhs[0], 0, "matrix"); /* Incrementing the pointer to access all values in the matrix */ for(i = 0; i < 3; i++){ printf("%f\n", *(ptr + (i * 3))); printf("%f\n", *(ptr + 1 + (i * 3))); printf("%f\n", *(ptr + 2 + (i * 3))); } 最终打印出以下内容:

4.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 我还尝试了以下方法的变体,以为嵌套函数调用可能有点奇怪,但无济于事:

/* Pointer to the first location of the mxArray */ mxArray *fieldValuePtr = mxGetField(prhs[0], 0, "matrix"); /* Get the double pointer to the first location in the matrix */ double *ptr = mxGetPr(fieldValuePtr); /* Same for loop code here as written above */ 有人对我如何实现自己正在尝试的目标,或者我可能做错的事情有想法吗?

谢谢!

编辑:根据yuk的评论,我尝试对具有名为array的字段的结构进行类似的操作,该字段是一维双精度数组。

包含数组的结构定义如下:

arrayStruct = struct('array', {4.44, 5.55, 6.66}) 我在mex函数中对arrayStruct进行了以下尝试:

mptr = mxGetPr(mxGetField(prhs[0], 0, "array")); printf("%f\n", *(mptr)); printf("%f\n", *(mptr + 1)); printf("%f\n", *(mptr + 2)); ...但是输出跟在先前打印的内容之后:

4.440000 0.000000 0.000000

回答:

您正在尝试访问MATLAB中的单元格数组变量。您确定数据会因此存储吗?如果将双数组放入结构中会发生什么?

matrixStruct = struct('matrix', [4, 4, 4; 5, 5, 5; 6, 6 ,6]) 我认为问题在于MATLAB如何在单元格数组中存储数据。尝试运行此命令:

double1 = 1; double2 = 1:2; cellempty = {[]}; celldouble1 = {1}; celldouble2 = {1:2}; cell2doubles = {1,2}; whos 输出:

Name Size Bytes Class Attributes cell2doubles 1x2 136 cell celldouble1 1x1 68 cell celldouble2 1x1 76 cell cellempty 1x1 60 cell double1 1x1 8 double double2 1x2 16 double 您可以看到单元格数组的每个元素占用数字大小额外的60个字节。

更多&回答...

matlab mex 矩阵,如何从mex函数访问matlab结构字段中的矩阵?相关推荐

  1. 【数字信号处理】卷积编程实现 ( Matlab 卷积和多项式乘法 conv 函数 | 使用 matlab 代码求卷积并绘图 )

    文章目录 一.Matlab 卷积和多项式乘法 conv 函数 二.使用 matlab 代码求卷积并绘图 一.Matlab 卷积和多项式乘法 conv 函数 Matlab 文档地址 : https:// ...

  2. C++57个入门知识点_17 类的访问权限及C语言模拟类的封装(类的私有权限突破方法:编译期进行权限检查,运行期通过指针修改类的私有成员变量;利用函数指针对结构体中成员变量进行修改;CPU大小尾排列)

    接上篇:C++57个入门知识点_16 类的标准写法(类名.成员变量.成员函数及对象命名规则:成员变量一般为私有,成员函数为公有并暴露给外部使用成员变量:防止类过大,声明写在.h,实现写在.cpp,调用 ...

  3. 使用sql中replace()函数替换或去掉字段中的某些字符

    1.去掉字段name中的'A'字母: 可用REPLACE(chr,search_string[,replacement_string])函数: update device set name=repla ...

  4. matlab exist用法,exist()函数在matlab中怎么用?

    exist name 等价于 r=exist(name) ,在程序里面这样更加实用 0 不存在则返回值 1 name 可以是变量名,如果存在,返回值 2 函数名.m 文件名,存在则返回值 3 mex ...

  5. MATLAB笔记1:sub2ind;ind2sub;删除矩阵某行或者某列元素;改变矩阵的形状reshape函数

    重点 MATLAB中的矩阵元素按列存储,其序号即是矩阵元素再内存中的排列顺序.例如: >> A=[1,2;3,4]A =1 23 4>> A(2)ans =3 sub2ind函 ...

  6. matlab 矩阵命令,matlab中的矩阵的基本运算命令

    matlab中的矩阵的基本运算命令 (2013-07-19 08:45:49) 1.1 矩阵的表示 1.2 矩阵运算 1.2.14 特殊运算 1.矩阵对角线元素的抽取 函数 diag 格式 X = d ...

  7. C语言 泛型链表 如何计算(结构体中各元素)相对内存地址?(字节对齐,结构体对齐)offsetof()函数 ( (struct X*)0 ) -> Y)语法(匿名结构体)

    示例: typedef struct _user {char name[20];char sex[20];int age;struct list_head mylist;//自定义结构体里保存双向循环 ...

  8. MathType可以在Word、PPT中插入矩阵吗

    工科学生或者老师在写论文时最头痛的就是编辑公式,因为word自带的公式编辑器往往满足不了专业的公式需求,MathType就很好的解决了这个问题.在进行公式编辑时,难免会遇到输入矩阵的情况,那么怎么输入 ...

  9. html中怎么输出函数,获取onclick事件来运行一个函数并在html元素中输出它

    而不是试图从值传递onclick-有一个功能,从输入得到的值然后另一个函数返回该函数的结果并允许将内容放入p中.在代码中将函数(javascript)从结构(HTML)中分离出来总是更好. 请注意,你 ...

最新文章

  1. nginx 访问控制之 认证
  2. abp模块生命周期设计思路剖析
  3. php怎么检查输入名称,PHP |通过$_POST []获取输入名称
  4. python线程暂停_python3线程启动与停止
  5. JAVA WEB 对返回数据进行按中文名称首字母A~Z升序排序
  6. ADSL 定时断线重连bat文件
  7. 汇编语言典型例子详解_单片机汇编语言经典一百例
  8. Java面试之爱立信
  9. C# - 获取工程里资源(图片、图标等)
  10. 学术-几何-维:超级立方体 (五维超级超立方体)
  11. Linux负载均衡解决方案 -- LVS 理论概述
  12. WSN连通性模拟、WSN覆盖率模拟、WSN分簇模拟、WSN能量损耗模拟
  13. sqlite3安全性研究
  14. IDEA 使用ctrl + alt + 方向键无法返回上一步解决办法
  15. ROS1云课→17化繁为简stdr和f1tenth
  16. kubernetes 菜鸟_菜鸟系列k8s——k8s快速入门(1)
  17. 宝塔php版本切换没效果_关于宝塔面板默认PHP版本及切换
  18. Google收录了内页,但是百度不收录新站内页
  19. java正则表达 w_正则表达式 \w \d 的意义
  20. python和vba操作excel_对比VBA学Python操作Excel

热门文章

  1. 华为轮值董事长郭平2020全联接大会主题演讲:永远面向阳光,阴影甩在身后
  2. MongoDB经典故障系列一:数据库频繁启动失败怎么办?
  3. 从React 编程到好莱坞
  4. Python精确指南——第三章 Selenium和爬虫
  5. c语言基础程序设计报告,c语言程序设计基础课程设计报告.doc
  6. Kafka和其他消息队列
  7. Kafka简介与消息队列
  8. Android 高斯模糊demo
  9. pandas保存为csv格式文件
  10. 最通俗易懂的图神经网络(GCN)原理详解