问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

matlab中数据类型与c语言数据类型的区别?

发布网友 发布时间:2022-04-26 22:56

我来回答

4个回答

热心网友 时间:2022-06-19 13:43

简单谈一下。

1.好多类型是对应的。输入一个数,matlab里边默认的数据类型是double型,也就对应C里边的double型;你如果想让他对应C语言里边的float,那就得强制类型转换,用single(a),a表示要转换的数值,当然也可以转换成各种长度的int型(可以用到的函数有int64,int32,int16,int8等),当然也有无符号数(用函数unit64等进行转换),也可以转成char,还有logic类型对应C中的bool型。

2.matlab里边也有结构体,也有对象类。

3.matlab特有cell,处理起来比结构体什么的方便得多~

当然你遇到具体问题,可以具体的来问,要不回答你也很笼统~

热心网友 时间:2022-06-19 13:43

matlab中有15种基本数据类型,主要是整型、浮点、逻辑、字符、日期和时间、结构数组、单元格数组以及函数句柄等。定义基本上与c相同,但是matlab中数据是以矩阵形式存在的,在matlab中调用c程序时,需将c程序改写为专用的输入输出形式。
如果我有一个用c语言写的函数,实现了一个功能,如一个简单的函数:
double
add(double
x,
double
y)
{
return
x
+
y;
}
现在我想要在matlab中使用它,比如输入:
>>
a
=
add(1.1,
2.2)
3.3000
要得出以上的结果,那应该怎样做呢?
解决方法之一是要通过使用mex文件,mex文件使得调用c函数和调用matlab的内置函数一样方便。mex文件是由原c代码加上mex文件专用的接口函数后编译而成的。
可以这样理解,mex文件实现了一种接口,它把在matlab中调用函数时输入的自变量通过特定的接口调入了c函数,得出的结果再通过该接口调回matlab。该特定接口的操作,包含在mexfunction这个函数中,由使用者具体设定。
所以现在我们要写一个包含add和mexfunction的c文件,matlab调用函数,把函数中的自变量(如上例中的1.1和2.2)传给mexfunction的一个参数,mexfunction把该值传给add,把得出的结果传回给mexfunction的另一个参数,matlab通过该参数来给出在matlab语句中调用函数时的输出值(如上例中的a)。
比如该c文件已写好,名为add.c。那么在matlab中,输入:
>>
mex
add.c
就能把add.c编译为mex文件(编译器的设置使用指令mex
-setup),在windows中,mex文件类型为mexw32,即现在我们得出add.mexw32文件。现在,我们就可以像调用m函数那样调用mex文件,如上面说到的例子。所以,通过mex文件,使用c函数就和使用m函数是一样的了。
我们现在来说mexfunction怎样写。
mexfunction的定义为:
void
mexfunction(
int
nlhs,
mxarray
*plhs[],
int
nrhs,
const
mxarray
*prhs[])
{
}
可以看到,mexfunction是没返回值的,它不是通过返回值把结果传回matlab的,而是通过对参数plhs的赋值。mexfunction的四个参数皆是说明matlab调用mex文件时的具体信息,如这样调用函数时:
>>
b
=
1.1;
c
=
2.2;
>>
a
=
add(b,
c)
mexfunction四个参数的意思为:
nlhs
=
1,说明调用语句左手面(lhs-left
hand
side)有一个变量,即a。
nrhs
=
2,说明调用语句右手面(rhs-right
hand
side)有两个自变量,即b和c。
plhs是一个数组,其内容为指针,该指针指向数据类型mxarray。因为现在左手面只有一个变量,即该数组只有一个指针,plhs[0]指向的结果会赋值给a。
prhs和plhs类似,因为右手面有两个自变量,即该数组有两个指针,prhs[0]指向了b,prhs[1]指向了c。要注意prhs是const的指针数组,即不能改变其指向内容。
因为matlab最基本的单元为array,无论是什么类型也好,如有double
array、
cell
array、
struct
array……所以a,b,c都是array,b
=
1.1便是一个1x1的double
array。而在c语言中,matlab的array使用mxarray类型来表示。所以就不难明白为什么plhs和prhs都是指向mxarray类型的指针数组。
完整的add.c如下:
//
add.c
#include
"mex.h"
//
使用mex文件必须包含的头文件
//
执行具体工作的c函数
double
add(double
x,
double
y)
{
return
x
+
y;
}
//
mex文件接口函数
void
mexfunction(
int
nlhs,
mxarray
*plhs[],
int
nrhs,
const
mxarray
*prhs[])
{
double
*a;
double
b,
c;
plhs[0]
=
mxcreatedoublematrix(1,
1,
mxreal);
a
=
mxgetpr(plhs[0]);
b
=
*(mxgetpr(prhs[0]));
c
=
*(mxgetpr(prhs[1]));
*a
=
add(b,
c);
}
mexfunction的内容是什么意思呢?我们知道,如果这样调用函数时:
>>
output
=
add(1.1,
2.2);
在未涉及具体的计算时,output的值是未知的,是未赋值的。所以在具体的程序中,我们建立一个1x1的实double矩阵(使用mxcreatedoublematrix函数,其返回指向刚建立的mxarray的指针),然后令plhs[0]指向它。接着令指针a指向plhs[0]所指向的mxarray的第一个元素(使用mxgetpr函数,返回指向mxarray的首元素的指针)。同样地,我们把prhs[0]和prhs[1]所指向的元素(即1.1和2.2)取出来赋给b和c。于是我们可以把b和c作自变量传给函数add,得出给果赋给指针a所指向的mxarray中的元素。因为a是指向plhs[0]所指向的mxarray的元素,所以最后作输出时,plhs[0]所指向的mxarray赋值给output,则output便是已计算好的结果了。

热心网友 时间:2022-06-19 13:44

其实 在matlab中不是特别的在意其数据类型,matlab的功能相当强大;C语言的数据类型就比较重要了,写程序的时候都要注意其语法....

热心网友 时间:2022-06-19 13:44

我觉得吧 其实差别不大 C语言要先定义再使用 Matlab只要想用随时可用 知识各自各自的语法
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
器世间的意思是什么 学吉他大概学费是多少 电吉他培训一般学费多少 天津吉他培训成人班费用多少 吉他培训班一般的学费多少钱 电脑怎么保存下载的视频文件怎么把视频保存到电脑上 双子座男生如果受到伤害死心了'是不是无论怎么做都无法挽回了。 和平精英微信怎么切换账号 更新之后换号方法 有关说说搞笑幽默句子的短句(寻找搞笑幽默的快乐) 说说你多大了,看看能不能做我干闺女怎么回复? MATLAB编程的数据类型是怎样的? 求问matlab中这是什么数据类型/表格?矩阵? 工商银行汽车分期贷款为什么打给第三方?对方还要收取5℅手续费?一次收取3年利息,同时还收保证金, 汽车分期贷款金额包含利息吗? 汽车分期贷款手续费 个人办理汽车分期贷款,哪家银行比较好 为什么第一次用支付宝打滴滴需要预付? 汽车分期贷款50000元,分36期,每期还款1870元,利率怎么算 支付宝上的滴滴打车怎么用? 我想明天早上去机场,现在能预约吗?还是现在下单必须现在坐?手机上显示的 交通出行逃票。申请银行贷款。车分期贷款。信用卡逾期透支。哪个会被记入个人? 支付宝的滴滴出行不能预约吗?是不是只有滴滴出行软件才行? 汽车分期贷款需要手续费吗?有什么需要注意的? 汽车分期贷款批下来后能不能换车型? 柠檬水,菊花茶,玫瑰茶那个好 脸上去皱纹最好的方法 怎么恢复6年前的QQ好友 柠檬玫瑰菊花茶一起喝有什么好处 经常喝玫瑰花茶和柠檬茶到底有什么用? 柠檬片,菊花,茉莉花,玫瑰花能一起泡水喝吗? 怎么可以恢复6年内删除的好友 请说明"matlab"中所有的"数据类型"和各种"数据类型"之间的转换函数 编程 ,用matlab读取excel,但是表格里面的数据类型不同(比如字符型,整型),这个是不是得 matlab怎么调用excel中的数据表 急急急,如何用matlab调用表格中的数据?数据类型是一串字符!!! matlab表格数据处理 如何用matlab读取多个excel表格数据,将每个表格数据表示为一个矩阵 举例说明matlab常用的数据类型有哪些?它们各有哪些特点 上古世纪1000点卷能换多少金 上古世纪你们一天能赚多少金? 上古世纪翡翠谷发酵到黎明多少金 上古世纪灼热龙心服。天鹰游侠一身50级皮甲多少金 上古世纪一个德菲纳之心等于多少个金 上古世纪一天赚多少金币? 上古世纪黄金次元箱 1.时装:秀丽之樱(永久) 2.滑翔翼:阿斯特拉之翼 要多少RMB? 上古世纪1金能换多少蓝盐贝 上古世纪一天能拿多少RMB 请问各位大神们上古世纪50级更换一个天赋要多少金啊 上古世纪充多少钱到满级 上古世纪 一个人玩的话 需要花多少RMB 如何在上古世纪中拿到黄金次元宝石。