lab

阅读 / 问答 / 标签

MATLAB中,a=zeros(5),a(1,3)=1,b(1,1)={a}是什么意思?

a=zeros(5)的意思是,将5×5的零矩阵(数组)赋值给a变量a(1,3)=1的意思是,将5×5的a矩阵(数组)中的第一行第五列用1替代0b(1,1)={a}的意思是,将元胞数组{a}赋值给b变量

matlab里面 Q=zeros(n(1)) 是什么意思??

x=ones(1,n)的意思是生成1行n列的元素为1的矩阵赋给xq=zeros(1,n)是一个1行n列的0矩阵赋给q

请问matlab里用zeros创建零矩阵有何用处呢?

最重要的一个用处就是预分配内存,加快程序速度,在老版本MATLAB中,一些程序预分配内存与否前后速度会差n多倍.

MATLAB中x=zeros(n+1,

zeros的用法如下 :参数可为变量 zeros(m,n)产生一个mxn的全零矩阵 zeros(m)产生一个mxm的全零方阵

MATLAB中x=zeros(n+1,2)是什么意思

zeros的用法如下 : 参数可为变量zeros(m,n)产生一个mxn的全零矩阵zeros(m)产生一个mxm的全零方阵

在matlab求解线性规划问题中zeros是什么作用?

zeros(3,1)就是下界,表示所有的决策量都大于零吧

Matlab中 函数zeroS(1,8) 代表什么意思??

创建一行八列的零矩阵。

matlab里面zeros(2:4)是什么意思?

learneroner解释的很好了。我再补充一下matlab中的zeros是定义一个空“矩阵”,是为了给以后往里存放数值预留的”磁盘空间“,告诉计算机,我要用的是这么大的矩阵,给我留好了。计算机就会空出这么大的空间,不用担心留的过多或过少而影响后期计算。你可以想象成现实生活中给饭店打电话预定多少人的餐位。以合理安排,不必造成资源的浪费。

matlab中zeros(3,0)什么意思

生成一个3×3阶0矩阵

MATLAB中zeros表示表示什么意思

matlab中的zeros是定义一个空矩阵,是为了给以后往里存放数值预留的”磁盘空间“,告诉计算机,我要用的是这么大的矩阵,给我留好了。计算机就会空出这么大的空间,不用担心留的过多或过少而影响后期计算。你可以想象成现实生活中给饭店打电话预定多少人的餐位。以合理安排,不必造成资源的浪费。

matlab中zeros函数是什么含义

matlab中的zeros是定义一个空“矩阵”,是为了给以后往里存放数值预留的”磁盘空间“,告诉计算机,我要用的是这么大的矩阵,给我留好了。计算机就会空出这么大的空间,不用担心留的过多或过少而影响后期计算。你可以想象成现实生活中给饭店打电话预定多少人的餐位。以合理安排,不必造成资源的浪费。

matlab中z=z[zreos(1,30);zeros(1,30)]是什么意思

可能写错了吧,不是zreos,是zeros.zreos(1,30)是生成1行30列元素都为0数组,故整个是生成一个2行30列的0数组。可以直接用z=zeros[2,30];

用matlab做线性规划 中lb=zeros(3,1)是什么意思啊

前面的答主已经说了是一个三个零的列向量,那我来具体阐释一下在lb中的含义。即第一个零对应x1,第二个零对应x2,第三个零对应x3。这里应该明白了,x其实在这个限制中分有三个单个变量受到影响(很可能X就是一个三行的列向量)那么整体含义就是x1,x2,x3下限都是0,即x1,x2,x3都大于等于0。

在matlab中,变量 x =zeros(3,1); 是什么意思?

楼上说的对,再补充一下。matlab中的zeros是定义一个空“矩阵”,是为了给以后往里存放数值预留的”磁盘空间“,告诉计算机,我要用的是这么大的矩阵,给我留好了。计算机就会空出这么大的空间,不用担心留的过多或过少而影响后期计算。你可以想象成现实生活中给饭店打电话预定多少人的餐位。以合理安排,不必造成资源的浪费。

在matlab中kk=zeros(k,1); 是什么意思 zeros是啥意思 KK呢

全是0的矩阵 k,1表示k行一列的矩阵元素全是1

zeros (2,3,4) 怎么有三个参数 是什么意思 matlab

tinystarlove说的简明易懂,我来再补充一下。matlab中的zeros是定义一个空矩阵,是为了给以后往里存放数值预留的”磁盘空间“,告诉计算机,我要用的是这么大的矩阵,给我留好了。计算机就会空出这么大的空间,不用担心留的过多或过少而影响后期计算。你可以想象成现实生活中给饭店打电话预定多少人的餐位。以合理安排,不必造成资源的浪费。

zeros(1:n)什么意思,我碰到这个问题了,麻烦你弄一下zeros(1:4),为什么是matlab算出来的结果。

用matlab帮助就可以,help zeros allhelp zeros all ZEROS Zeros array. ZEROS(N) is an N-by-N matrix of zeros. ZEROS(M,N) or ZEROS([M,N]) is an M-by-N matrix of zeros. ZEROS(M,N,P,...) or ZEROS([M N P ...]) is an M-by-N-by-P-by-... array of zeros. ZEROS(SIZE(A)) is the same size as A and all zeros. ZEROS with no arguments is the scalar 0. ZEROS(M,N,...,CLASSNAME) or ZEROS([M,N,...],CLASSNAME) is an M-by-N-by-... array of zeros of class CLASSNAME. Example: x = zeros(2,3,"int8");zeros函数有几种用法zeros(N)为一个N*N的0矩阵zeros(M,N)或zeros[M,N]是一个M*N的0矩阵zeros(M,N,P,...) 或 zeros([M N P ...])是一个M*N*P的多维0矩阵zeros(size(A))是一个大小和A相同的0矩阵zeros不带参数是个1*1的矩阵也就是一个数0。zeros(1:4)是一个四维的0矩阵,第一维为1,第二维为2,第三维为3,第四维为4。

matlab中zeros函数的问题,求大侠解答

input=round(i);这句话改成input=double(i);round是四舍五入,imread读出来的矩阵本来就是unsignedint。错误是因为zeros的输入不可以是uint的,改成double就OK了

用matlab中,在解微分方程组时,dydt=zeros(2,1) 这个式子表示什么意思

就是给dydt这个变量赋值语句啊。把这个语句赋值到matlab运行就可以看到。

请问matlab里用zeros创建零矩阵有何用处呢?

最重要的一个用处就是预分配内存,加快程序速度,在老版本MATLAB中,一些程序预分配内存与否前后速度会差n多倍.

matlab中zeros是什么意思

matlab中的zeros是定义一个空矩阵,是为了给以后往里存放数值预留的”磁盘空间“,告诉计算机,我要用的是这么大的矩阵,给我留好了。计算机就会空出这么大的空间,不用担心留的过多或过少而影响后期计算。你可以想象成现实生活中给饭店打电话预定多少人的餐位。以合理安排,不必造成资源的浪费。

matlab中zeros是什么意思

matlab中的zeros是定义一个空“矩阵”,是为了给以后往里存放数值预留的”磁盘空间“,告诉计算机,我要用的是这么大的矩阵,给我留好了。计算机就会空出这么大的空间,不用担心留的过多或过少而影响后期计算。你可以想象成现实生活中给饭店打电话预定多少人的餐位。以合理安排,不必造成资源的浪费。

matlab中zeros是什么意思

创建全零数组的命令,例如zeros(2)ans = 0 0 0 0就是建立一个2X2的全0数组

matlab中zeros是什么意思

创建一个元素全为0的矩阵,比如a=zeros(3,5);就是创建一个3行5列的0矩阵。希望能帮到你。

MATLAB程序中zeros 这是什么意思

zeros是用来创建全0矩阵的命令。zeros(a,b)就是创建一个a行b列的全0矩阵。如zeros(2,3)会输出0 0 00 0 0

matlab中的rem怎么用

R=rem(X,Y),求余数函数,X,Y应该为正数。

matlab中rem语句什么作用啊

取余函数,如10除以3余1,rem(10,3)=1

在matlab中rem表示什么意思

求余数啊~~~~注意使用matlab的帮助~~Remainder after divisionSyntax R = rem(X,Y)Description R = rem(X,Y) if Y ~= 0, returns X - n.*Y where n = fix(X./Y). If Y is not an integer and the quotient X./Y is within roundoff error of an integer, then n is that integer. The inputs X and Y must be real arrays of the same size, or real scalars

Olabuy商城有一个叫尧城一品的土鸡蛋,说是正宗的土鸡蛋原始深林散养的?

之前我在他们公众号【日之美农业】买过一次土鸡蛋,包装很好,鸡蛋看起来和外面超市的不一样,家里老人吃了说和老家的一样,蛋黄很黄很香,应该是真的土鸡蛋

如何导入一组Labshop 分析结果?

选择非参数检验,通常可以选用K-S检验方法,具体操作搜索“spss教程:单样本非参数检验 百度经验”,我简单写的一点文章,

available和vacancy的区别

vacant形容的“空”主要指没被占用。 这时候,vacant和available的意思是相近的。

vacant,available,empty的用法和区别!表给莪复制黏贴!最好是上海的初三的回答!

vacant空的,比如说一个空的座位,a vacant seatempty指某个东西里面是空的,或者形容一个人非常空虚available指人是不是单身,或者有没有空,are you available tonight?sth is available to sb,是指某物对某人来说是可获得的

anglabaybay是混血吗

是。根据查询anglabaybay个人微博显示,Angelababy的确是混血儿,她拥有四分之一的德国血统,所以她算是混血儿。杨颖,英文名Angelababy,1989年2月28日于中国上海出生,毕业于嘉诺撒圣心商学书院。2003年,Angelababy成为《Ray》《Dear》杂志的专用模特。

matlab如何使用mdb格式的数据库

请看一下对不对 最后想调用是用load么 回答: 配置好环境后,运行。查看数据Data是否与数据库内容一致。 追问: 具体操作能不能指明一下啊 谢谢啦 回答: 你运行看一下上述代码是否报错。然后在command窗口显示一下Data数据,看是否与数据库一致。 追问: 运行后没有错误,但是显示data时显示‘? Undefined function or variable "Data"."这可能是什么原因啊?另外,现在我用了另一种方法,先把mdb数据打开导出转为xls文件,然后在matlab中的m文件使用xlsread()函数调用xls文件,不知道这样做正确不正确啊,谢谢了

机械工业出版社的matlab数据分析与挖掘实战这本书的代码和课件怎么获取

  网上直接在电子版可以下载。  本书共16章,共三篇。基础篇(第1~5章),第1章的主要内容是数据挖掘概述;第2章对本书所用到的数据挖掘建模工具MATALB进行了简明扼要的说明;第3章、第4章、第5章对数据挖掘的建模过程,包括数据探索、数据预处理及挖掘建模的常用算法与原理进行了介绍。实战篇(第6~15章),重点对数据挖掘技术在电力、航空、医疗、互联网、生产制造以及公共服务等行业的应用进行了分析。

要生成一个用来编译成mex文件的.cpp文件,在Matlab输入mex -setup

错误提示很明显了。你当前工作路径下没有mexGrabCut.cpp文件

matlab gui程序中调用./mex文件,如何打包

回答 - 回答时间:2017年12月15日[最佳答案]通过MEX文件可以在MATLAB中像调用内嵌函数一样调用现有的使用C语言和Fortran等语言编写的函数,实现...

请问有大佬知道为什么MATLAB里面mex可以找到编译器但是mbuild不行

MATLAB会列出当前机器上已经安装的、且与当前MATLAB版本兼容的所有C编译器,一般而言,MATLAB都会自带一个LCC编译器,然而LCC目前仅支持32位的MATLAB,所以你的机器上没有。

matlab mex -setup执行出错,这是什么错误?应该怎么操作?

是要装libsvm吗?这问题是缺乏对应的编译器,可以到windows官网上去下。

急!!!matlab调用VC产生的mex函数运行过程中经常弹出一个窗口报错然后强制你退出matlab软件。

你检查过mexfunction函数内层语句有问题没?还有你不能设置只有mex这三个单词的程序,会与matlab内置函数有冲突。

c++ 编辑的.cpp文件如何在matlab中mex编译报错

你好,我也是这个问题,请问您解决了吗

matlab中mex-file文件是什么文件,有什么用?怎样看其中的代码?谢谢

程序源文件编译后的文件。相比m文件,mex文件执行速度更快。不能像查看m文件一样查看mex文件,原因是mex文件是二进制文件。

matlab 中mex -setup 编译器怎么弄?

这个需要你的电脑上安装有C++6.0才能出来,mex -setup列出的编译器都是你电脑上的,你图上的[1] Lcc-win32是matlab自带的编译器。由于你电脑上没安装其他的编译器,当然就检测不到C++6.0

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

我觉得吧 其实差别不大 C语言要先定义再使用 Matlab只要想用随时可用 知识各自各自的语法

如何让matlab用mex与C连接使用有例子 PDF

如果我有一个用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)。值得注意的是,mex文件是与平台有关的,以我的理解,mex文件就是另类的动态链接库。在matlab6.5中使用mex -v 选项,你可以看到最后mex阶段有类似如下的信息:--> "del _lib94902.obj" --> "del "test.exp"" --> "del "test.lib""也就是说,虽然在matlab6.5生成的是dll文件,但是中间确实有过lib文件生成。比如该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如下:#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便是已计算好的结果了。上面说的一大堆指向这指向那,什么mxArray,初学者肯定都会被弄到头晕眼花了。很抱歉,要搞清楚这些乱糟糟的关系,只有多看多练。实际上mexFunction是没有这么简单的,我们要对用户的输入自变量的个数和类型进行测试,以确保输入正确。如在add函数的例子中,用户输入char array便是一种错误了。从上面的讲述中我们总结出,MEX文件实现了一种接口,把C语言中的计算结果适当地返回给Matlab罢了。当我们已经有用C编写的大型程序时,大可不必在 Matlab里重写,只写个接口,做成MEX文件就成了。另外,在Matlab程序中的部份计算瓶颈(如循环),可通过MEX文件用C语言实现,以提高计算速度。以上是对mex文件的初步认识,下面详细介绍如何用c语言编写mex文件:1 为什么要用C语言编写MEX文件MATLAB是矩阵语言,是为向量和矩阵操作设计的,一般来说,如果运算可以用向量或矩阵实现,其运算速度是非常快的。但若运算中涉及到大量的循环处理,MATLAB的速度的令人难以忍受的。解决方法之一为,当必须使用for循环时,把它写为MEX文件,这样不必在每次运行循环中的语句时MATLAB都对它们进行解释。2 编译器的安装与配置要使用MATLAB编译器,用户计算机上应用事先安装与MATLAB适配的以下任何一种ANSI C/C++编译器:5.0、6.0版的MicroSoft Visual C++(MSVC)5.0、5.2、5.3、5.4、5.5版的Borland C++LCC(由MATLAB自带,只能用来产生MEX文件)下面是安装与配置MATLAB编译器应用程序MEX的设置的步骤:(1)在MATLAB命令窗口中运行mex –setup,出现下列提示:Please choose your compiler for building external interface (MEX) files:Would you like mex to locate installed compilers [y]/n?(2)选择y,MATLAB将自动搜索计算机上已安装的外部编译器的类型、版本及所在路径,并列出来让用户选择:Select a compiler:[1] Borland C++Builder version 6.0 in C:Program FilesBorland[2] Digital Visual Fortran version 6.0 in C:Program FilesMicrosoft Visual Studio[3] Lcc C version 2.4 in D:MATLAB6P5P1syslcc[4] Microsoft Visual C/C++ version 6.0 in C:Program FilesMicrosoft Visual Studio[0] NoneCompiler:(3)选择其中一种(在这里选择了3),MATLAB让用户进行确认:Please verify your choices:Compiler: Lcc C 2.4Location: D:MATLAB6P5P1syslccAre these correct?([y]/n):(4)选择y,结束MATLAB编译器的配置。3 一个简单的MEX文件例子【例1】用m文件建立一个1000×1000的Hilbert矩阵。ticm=1000;n=1000;a=zeros(m,n);for i=1:1000 for j=1:1000 a(i,j)=1/(i+j); endendtoc在matlab中新建一个Matlab_1.cpp 文件并输入以下程序:#include "mex.h"//计算过程void hilb(double *y,int n){ int i,j; for(i=0;i for(j=0;j *(y+j+i*n)=1/((double)i+(double)j+1);}//接口过程void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[]){ double x,*y; int n; if (nrhs!=1) mexErrMsgTxt("One inputs required."); if (nlhs != 1) mexErrMsgTxt("One output required."); if (!mxIsDouble(prhs[0])||mxGetN(prhs[0])*mxGetM(prhs[0])!=1) mexErrMsgTxt("Input must be scalars."); x=mxGetScalar(prhs[0]); plhs[0]=mxCreateDoubleMatrix(x,x,mxREAL); n=mxGetM(plhs[0]); y=mxGetPr(plhs[0]); hilb(y,n);}该程序是一个C语言程序,它也实现了建立Hilbert矩阵的功能。在MATLAB命令窗口输入以下命令:mex Matlab_1.cpp,即可编译成功。进入该文件夹,会发现多了两个文件:Matlab_1.asv和Matlab_1.dll,其中Matlab_1.dll即是MEX文件。运行下面程序:tica=Matlab_1(1000);tocelapsed_time = 0.0470由上面看出,同样功能的MEX文件比m文件快得多。4 MEX文件的组成与参数MEX文件的源代码一般由两部分组成:(1)计算过程。该过程包含了MEX文件实现计算功能的代码,是标准的C语言子程序。(2)入口过程。该过程提供计算过程与MATLAB之间的接口,以入口函数mxFunction实现。在该过程中,通常所做的工作是检测输入、输出参数个数和类型的正确性,然后利用mx-函数得到MATLAB传递过来的变量(比如矩阵的维数、向量的地址等),传递给计算过程。MEX文件的计算过程和入口过程也可以合并在一起。但不管那种情况,都要包含#include "mex.h",以保证入口点和接口过程的正确声明。注意,入口过程的名称必须是mexFunction,并且包含四个参数,即:void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])其中,参数nlhs和nrhs表示MATLAB在调用该MEX文件时等式左端和右端变量的个数,例如在MATLAB命令窗口中输入以下命令:[a,b,c]=Matlab_1(d,e,f,g)则nlhs为3,nrhs为4。MATLAB在调用MEX文件时,输入和输出参数保存在两个mxArray*类型的指针数组中,分别为prhs[]和plhs[]。prhs[0]表示第一个输入参数,prhs[1]表示第二个输入参数,…,以此类推。如上例中,d→prhs[0],e→prhs[1],f→prhs[2],f→prhs[3]。同时注意,这些参数的类型都是mxArray *。接口过程要把参数传递给计算过程,还需要从prhs中读出矩阵的信息,这就要用到下面的mx-函数和mex-函数。5 常用的mex-函数和mx-函数在MATLAB6.5版本中,提供的mx-函数有106个,mex-函数有38个,下面我们仅介绍常用的函数。5.1入口函数mexFunction该函数是C MEX文件的入口函数,它的格式是固定的:void mexFunction(int nlhs,mxArray *plhs[],int nrhs,const mxArray *prhs[])说明:MATLAB函数的调用方式一般为:[a,b,c,…]=被调用函数名称(d,e,f,…),nlhs保存了等号左端输出参数的个数,指针数组plhs具体保存了等号左端各参数的地址,注意在plhs各元素针向的mxArray内存未分配,需在接口过程中分配内存;prhs保存了等号右端输入参数的个数,指针数组prhs具体保存了等号右端各参数的地址,注意MATLAB在调用该MEX文件时,各输入参数已存在,所以在接口过程中不需要再为这些参数分配内存。

MATLAB编译器配置mex -v 出错

我碰到的也是类似的问题~

matlab如何编译mex文件

先用mbuild-setup选择安装编译器再用指令mexc文件件名编译

Matlab 中为什么调用不了MEX文件?

首先,要保证MEX文件编译成功,这个可以从编译的返回字串中看到。其次,MEX所在的路径必须正确,要在Matlab的路径或你添加的路径中。最后,MEX文件的入口函数一定要正确,参考例子程序。希望能帮助你。

matlab中,如何加快数据运算速度?

通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度。Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或WatcomC中的一种。如果你在安装Matlab时已经设置过编译器,那么现在你应该就可以使用mex命令来编译c语言的程序了。如果当时没有选,就在Matlab里键入mex-setup,下面只要根据提示一步步设置就可以了。需要注意的是,较低版本的在设置编译器路径时,只能使用路径名称的8字符形式。比如我用的VC装在路径C:PROGRAMFILESDEVSTUDIO下,那在设置路径时就要写成:“C:PROGRA~1”这样设置完之后,mex就可以执行了。为了测试你的路径设置正确与否,把下面的程序存为hello.c。/*hello.c*/#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){mexPrintf("hello,world! ");}假设你把hello.c放在了C:TEST下,在Matlab里用CDC:TEST将当前目录改为C:TEST(注意,仅将C:TEST加入搜索路径是没有用的)。现在敲:mexhello.c如果一切顺利,编译应该在出现编译器提示信息后正常退出。如果你已将C:TEST加入了搜索路径,现在键入hello,程序会在屏幕上打出一行:hello,world!看看CTEST目录下,你会发现多了一个文件:HELLO.DLL。这样,第一个mex函数就算完成了。分析hello.c,可以看到程序的结构是十分简单的,整个程序由一个接口子过程mexFunction构成。voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[])前面提到过,Matlab的mex函数有一定的接口规范,就是指这nlhs:输出参数数目plhs:指向输出参数的指针nrhs:输入参数数目例如,使用[a,b]=test(c,d,e)调用mex函数test时,传给test的这四个参数分别是2,plhs,3,prhs其中:prhs[0]=cprhs[1]=dprhs[2]=e当函数返回时,将会把你放在plhs[0],plhs[1]里的地址赋给a和b,达到返回数据的目的。细心的你也许已经注意到,prhs[i]和plhs[i]都是指向类型mxArray类型数据的指针。这个类型是在mex.h中定义的,事实上,在Matlab里大多数数据都是以这种类型存在。当然还有其他的数据类型,可以参考Apiguide.pdf里的介绍。为了让大家能更直观地了解参数传递的过程,我们把hello.c改写一下,使它能根据输入参数的变化给出不同的屏幕输出://hello.c2.0#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){inti;i=mxGetScalar(prhs[0]);if(i==1)mexPrintf("hello,world! ");elsemexPrintf("大家好! ");}将这个程序编译通过后,执行hello(1),屏幕上会打出:hello,world!而hello(0)将会得到:大家好!现在,程序hello已经可以根据输入参数来给出相应的屏幕输出。在这个程序里,除了用到了屏幕输出函数mexPrintf(用法跟c里的printf函数几乎完全一样)外,还用到了一个函数:mxGetScalar,调用方式如下:i=mxGetScalar(prhs[0]);"Scalar"就是标量的意思。在Matlab里数据都是以数组的形式存在的,mxGetScalar的作用就是把通过prhs[0]传递进来的mxArray类型的指针指向的数据(标量)赋给C程序里的变量。这个变量本来应该是double类型的,通过强制类型转换赋给了整形变量i。既然有标量,显然还应该有矢量,否则矩阵就没法传了。看下面的程序://hello.c2.1#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){int*i;i=mxGetPr(prhs[0]);if(i[0]==1)mexPrintf("hello,world! ");elsemexPrintf("大家好! ");}这样,就通过mxGetPr函数从指向mxArray类型数据的prhs[0]获得了指向double类型的指针。但是,还有个问题,如果输入的不是单个的数据,而是向量或矩阵,那该怎么处理呢?通过mxGetPr只能得到指向这个矩阵的指针,如果我们不知道这个矩阵的确切大小,就没法对它进行计算。为了解决这个问题,Matlab提供了两个函数mxGetM和mxGetN来获得传进来参数的行数和列数。下面例程的功能很简单,就是获得输入的矩阵,把它在屏幕上显示出来://show.c1.0#include"mex.h"#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){double*data;intM,N;inti,j;data=mxGetPr(prhs[0]);//获得指向矩阵的指针M=mxGetM(prhs[0]);//获得矩阵的行数N=mxGetN(prhs[0]);//获得矩阵的列数for(i=0;i<M;i++){for(j=0;j<N;j++)mexPrintf("%4.3f",data[j*M+i]);mexPrintf(" ");}}编译完成后,用下面的命令测试一下:a=1:10;b=[a;a+1];show(a)show(b)需要注意的是,在Matlab里,矩阵第一行是从1开始的,而在C语言中,第一行的序数为零,Matlab里的矩阵元素b(i,j)在传递到C中的一维数组大data后对应于data[j*M+i]。输入数据是在函数调用之前已经在Matlab里申请了内存的,由于mex函数与Matlab共用同一个地址空间,因而在prhs[]里传递指针就可以达到参数传递的目的。但是,输出参数却需要在mex函数内申请到内存空间,才能将指针放在plhs[]中传递出去。由于返回指针类型必须是mxArray,所以Matlab专门提供了一个函数:mxCreateDoubleMatrix来实现内存的申请,函数原型如下:mxArray*mxCreateDoubleMatrix(intm,intn,mxComplexityComplexFlag)m:待申请矩阵的行数n:待申请矩阵的列数为矩阵申请内存后,得到的是mxArray类型的指针,就可以放在plhs[]里传递回去了。但是对这个新矩阵的处理,却要在函数内完成,这时就需要用到前面介绍的mxGetPr。使用mxGetPr获得指向这个矩阵中数据区的指针(double类型)后,就可以对这个矩阵进行各种操作和运算了。下面的程序是在上面的show.c的基础上稍作改变得到的,功能是将输//reverse.c1.0#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){double*inData;double*outData;intM,N;inti,j;inData=mxGetPr(prhs[0]);M=mxGetM(prhs[0]);N=mxGetN(prhs[0]);plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL);outData=mxGetPr(plhs[0]);for(i=0;i<M;i++)for(j=0;j<N;j++)outData[j*M+i]=inData[(N-1-j)*M+i];}当然,Matlab里使用到的并不是只有double类型这一种矩阵,还有字符串类型、稀疏矩阵、结构类型矩阵等等,并提供了相应的处理函数。本文用到编制mex程序中最经常遇到的一些函数,其余的详细情况清参考Apiref.pdf。通过前面两部分的介绍,大家对参数的输入和输出方法应该有了基本的了解。具备了这些知识,就能够满足一般的编程需要了。但这些程序还有些小的缺陷,以前面介绍的re由于前面的例程中没有对输入、输出参数的数目及类型进行检查,导致程序的容错性很差,以下程序则容错性较好#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){double*inData;double*outData;intM,N;//异常处理//异常处理if(nrhs!=1)mexErrMsgTxt("USAGE:b=reverse(a) ");if(!mxIsDouble(prhs[0]))mexErrMsgTxt("theInputMatrixmustbedouble! ");inData=mxGetPr(prhs[0]);M=mxGetM(prhs[0]);N=mxGetN(prhs[0]);plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL);outData=mxGetPr(plhs[0]);for(i=0;i<M;i++)for(j=0;j<N;j++)outData[j*M+i]=inData[(N-1-j)*M+i];}在上面的异常处理中,使用了两个新的函数:mexErrMsgTxt和mxIsDouble。MexErrMsgTxt在给出出错提示的同时退出当前程序的运行。MxIsDouble则用于判断mxArray中的数据是否double类型。当然Matlab还提供了许多用于判断其他数据类型的函数,这里不加详述。需要说明的是,Matlab提供的API中,函数前缀有mex-和mx-两种。带mx-前缀的大多是对mxArray数据进行操作的函数,如mxIsDouble,mxCreateDoubleMatrix等等。而带mx前缀的则大多是与Matlab环境进行交互的函数,如mexPrintf,mxErrMsgTxt等等。了解了这一点,对在Apiref.pdf中查找所需的函数很有帮助。至此为止,使用C编写mex函数的基本过程已经介绍完了。

MATLAB mex 找不到编译器怎么办?

.M文件是保存一段代码的文件,类似于C语言中的一个函数体; 这也是MATLAB中最常见的文件保存格式之一.MEX文件是一种“可在matlab环境中调用的C(或fortran)语言衍生程序”。也就是说,MEX文件的源码文件是由C或Fortran语言编写的,后经matlab编译器处理而生成的二进制文件;它可以被matlab解释器自动装载并执行的动态链接程序,这种文件在windows下是ddl文件。.mat是matlab的数据存储的标准格式。也就是你操作产生的数据的一个集合包,可以把一次处理的结果保存,供下一次使用。你可以调用matlab的子程序库,用c或fortan调用mat格式的数据。有几种方法可以打开1.matlab中可以用load命令读取.mat文件 2.C语言中有API读取.mat文件,如matOpen, matClose等等 3.用记事本就可以打开.mat文件,.mat文件格式是公开的,你可以自己解析里面的内容葛源及树管毋活垦季活服舜峻尉卉毫绥羽稀互趁

matlab怎么调用mex文件

编译器必须安装在C盘嘛????

MATLAB的M文件、MEX文件、MAT文件是什么

.M文件是保存一段代码的文件,类似于C语言中的一个函数体; 这也是MATLAB中最常见的文件保存格式之一 .MEX文件是一种“可在matlab环境中调用的C(或fortran)语言衍生程序”。也就是说,MEX文件的源码文件是由C或Fortran语言编写的,后经matlab编译器处理而生成的二进制文件;它可以被matlab解释器自动装载并执行的动态链接程序,这种文件在windows下是ddl文件。.mat是matlab的数据存储的标准格式。也就是你操作产生的数据的一个集合包,可以把一次处理的结果保存,供下一次使用。你可以调用matlab的子程序库,用c或fortan调用mat格式的数据。有几种方法可以打开1.matlab中可以用load命令读取.mat文件 2.C语言中有API读取.mat文件,如matOpen, matClose等等 3.用记事本就可以打开.mat文件,.mat文件格式是公开的,你可以自己解析里面的内容

matlab mex文件无法删除

不是,是因为matlab对mex文件做了缓存。可以尝试一下 clear all; fclose all; 执行这两个命令后应该就可以了

matlab mex 编译器怎么编译文件

通过MEX文件可以在MATLAB中像调用内嵌函数一样调用现有的使用C语言和Fortran等语言编写的函数,实现了代码重用,同时也能解决MATLAB循环效率低的缺点,提高MATLAB环境中数据处理的效率。MEX文件的后缀名为 .mexw32MEX文件的编写和编译需要两个基本条件:一是必须按照MATLAB应用程序接口组件和相关工具,二是要有C语言或Fortran语言的编译器。需要对MATLAB系统进行设置,使MATLAB系统知道使用系统的哪一个C语言编译器,以及其参数和路径。MEX文件系统设置:>> mex –setup按照提示进行,最后出现Done…系统配置完毕。C语言MEX文件的建立C语言MEX文件的建立1. MEX文件的结构a) 计算子程序b) 入口子程序,void mexFunction(int nlhs, mxArray *plhs[],int nrhs,const mxArray *prhs[]){ /*用户特定的代码….*/ }2. 创建timestwoalt.c#include "mex.h"void timestwo_alt(double *y, double x){*y = 2.0*x;}void mexFunction( int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[] ){double *y;doublex;/* 检查参数 */if (nrhs != 1) { mexErrMsgTxt("One input argument required.");} else if (nlhs > 1) { mexErrMsgTxt("Too many output arguments.");} else if (!mxIsNumeric(prhs[0])) { mexErrMsgTxt("Argument must be numeric.");} else if (mxGetNumberOfElements(prhs[0]) != 1 || mxIsComplex(prhs[0])) { mexErrMsgTxt("Argument must be non-complex scalar.");}/* 为输出参数创建变量 */plhs[0] = mxCreateDoubleMatrix(1,1,mxREAL); /* 为参数 x、y赋值,x为值,而y为指针 (由于MATLAB没有值传递,所以用指针才能得到修改后的y值, 不然修改的是y的一个副本,为临时变量,在函数返回时,y值没有变化, 不能得到希望的结果) */x = mxGetScalar(prhs[0]);y = mxGetPr(plhs[0]);/* 调用timestwo_alt 子函数 */timestwo_alt(y,x);}3. 编译链接C语言的MEX文件源程序,在MATLAB的控制窗口中输入:mex timestwoalt.c生成一个名为timestwoalt.mexw32的MEX文件4. 运行:在MATLAB的控制窗口中输入x=2;y=timestwoalt(x)输出:y=4MEX文件实现了一种C语言与MATLAB的接口,其实际的计算功能仍在C语言形式的计算子程序中完成,而入口子程序的功能是检查参数以匹配C语言的参数规范(how to?)。当有C语言编写的大型程序时,不必用MATLAB语言重新编写,只要将此C语言程序作为一个计算子程序,然后编写一个入口子程序,完成参数的匹配,然后编译成MEX文件即可。MEX文件的另外一个功能是可以将MATLAB编程中的瓶颈问题,如多重循环等,将此类费时的指令用C语言实现,然后作必要的入口子程序,编译成MEX文件,可以有效地提高MATLAB的效率。S-函数创建器限制了C语言S-函数的功能:只能有一个输入信号和一个输出信号,而且只能处理double类型的数据!所以,可用性不大。

MATLAB的M文件、MEX文件、MAT文件是什么

.M文件是保存一段代码的文件,类似于C语言中的一个函数体;这也是MATLAB中最常见的文件保存格式之一.MEX文件是一种“可在matlab环境中调用的C(或fortran)语言衍生程序”。也就是说,MEX文件的源码文件是由C或Fortran语言编写的,后经matlab编译器处理而生成的二进制文件;它可以被matlab解释器自动装载并执行的动态链接程序,这种文件在windows下是ddl文件。.mat是matlab的数据存储的标准格式。也就是你操作产生的数据的一个集合包,可以把一次处理的结果保存,供下一次使用。你可以调用matlab的子程序库,用c或fortan调用mat格式的数据。有几种方法可以打开1.matlab中可以用load命令读取.mat文件2.C语言中有API读取.mat文件,如matOpen,matClose等等3.用记事本就可以打开.mat文件,.mat文件格式是公开的,你可以自己解析里面的内容

MATLAB的M文件、MEX文件、MAT文件是什么

.m文件是保存一段代码的文件,类似于c语言中的一个函数体; 这也是matlab中最常见的文件保存格式之一.mex文件是一种“可在matlab环境中调用的c(或fortran)语言衍生程序”。也就是说,mex文件的源码文件是由c或fortran语言编写的,后经matlab编译器处理而生成的二进制文件;它可以被matlab解释器自动装载并执行的动态链接程序,这种文件在windows下是ddl文件。.mat是matlab的数据存储的标准格式。也就是你操作产生的数据的一个集合包,可以把一次处理的结果保存,供下一次使用。你可以调用matlab的子程序库,用c或fortan调用mat格式的数据。有几种方法可以打开1.matlab中可以用load命令读取.mat文件2.c语言中有api读取.mat文件,如matopen,matclose等等3.用记事本就可以打开.mat文件,.mat文件格式是公开的,你可以自己解析里面的内容

如何快速的调用Matlab中的Mex函数

通过把耗时长的函数用c语言实现,并编译成mex函数可以加快执行速度。Matlab本身是不带c语言的编译器的,所以要求你的机器上已经安装有VC,BC或WatcomC中的一种。如果你在安装Matlab时已经设置过编译器,那么现在你应该就可以使用mex命令来编译c语言的程序了。如果当时没有选,就在Matlab里键入mex-setup,下面只要根据提示一步步设置就可以了。需要注意的是,较低版本的在设置编译器路径时,只能使用路径名称的8字符形式。比如我用的VC装在路径C:PROGRAMFILESDEVSTUDIO下,那在设置路径时就要写成:“C:PROGRA~1”这样设置完之后,mex就可以执行了。为了测试你的路径设置正确与否,把下面的程序存为hello.c。/*hello.c*/#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){mexPrintf("hello,world! ");}假设你把hello.c放在了C:TEST下,在Matlab里用CDC:TEST将当前目录改为C:TEST(注意,仅将C:TEST加入搜索路径是没有用的)。现在敲:mexhello.c如果一切顺利,编译应该在出现编译器提示信息后正常退出。如果你已将C:TEST加入了搜索路径,现在键入hello,程序会在屏幕上打出一行:hello,world!看看CTEST目录下,你会发现多了一个文件:HELLO.DLL。这样,第一个mex函数就算完成了。分析hello.c,可以看到程序的结构是十分简单的,整个程序由一个接口子过程mexFunction构成。voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[])前面提到过,Matlab的mex函数有一定的接口规范,就是指这nlhs:输出参数数目plhs:指向输出参数的指针nrhs:输入参数数目例如,使用[a,b]=test(c,d,e)调用mex函数test时,传给test的这四个参数分别是2,plhs,3,prhs其中:prhs[0]=cprhs[1]=dprhs[2]=e当函数返回时,将会把你放在plhs[0],plhs[1]里的地址赋给a和b,达到返回数据的目的。细心的你也许已经注意到,prhs[i]和plhs[i]都是指向类型mxArray类型数据的指针。这个类型是在mex.h中定义的,事实上,在Matlab里大多数数据都是以这种类型存在。当然还有其他的数据类型,可以参考Apiguide.pdf里的介绍。为了让大家能更直观地了解参数传递的过程,我们把hello.c改写一下,使它能根据输入参数的变化给出不同的屏幕输出://hello.c2.0#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){inti;i=mxGetScalar(prhs[0]);if(i==1)mexPrintf("hello,world! ");elsemexPrintf("大家好! ");}将这个程序编译通过后,执行hello(1),屏幕上会打出:hello,world!而hello(0)将会得到:大家好!现在,程序hello已经可以根据输入参数来给出相应的屏幕输出。在这个程序里,除了用到了屏幕输出函数mexPrintf(用法跟c里的printf函数几乎完全一样)外,还用到了一个函数:mxGetScalar,调用方式如下:i=mxGetScalar(prhs[0]);"Scalar"就是标量的意思。在Matlab里数据都是以数组的形式存在的,mxGetScalar的作用就是把通过prhs[0]传递进来的mxArray类型的指针指向的数据(标量)赋给C程序里的变量。这个变量本来应该是double类型的,通过强制类型转换赋给了整形变量i。既然有标量,显然还应该有矢量,否则矩阵就没法传了。看下面的程序://hello.c2.1#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){int*i;i=mxGetPr(prhs[0]);if(i[0]==1)mexPrintf("hello,world! ");elsemexPrintf("大家好! ");}这样,就通过mxGetPr函数从指向mxArray类型数据的prhs[0]获得了指向double类型的指针。但是,还有个问题,如果输入的不是单个的数据,而是向量或矩阵,那该怎么处理呢?通过mxGetPr只能得到指向这个矩阵的指针,如果我们不知道这个矩阵的确切大小,就没法对它进行计算。为了解决这个问题,Matlab提供了两个函数mxGetM和mxGetN来获得传进来参数的行数和列数。下面例程的功能很简单,就是获得输入的矩阵,把它在屏幕上显示出来://show.c1.0#include"mex.h"#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){double*data;intM,N;inti,j;data=mxGetPr(prhs[0]);//获得指向矩阵的指针M=mxGetM(prhs[0]);//获得矩阵的行数N=mxGetN(prhs[0]);//获得矩阵的列数for(i=0;i<M;i++){for(j=0;j<N;j++)mexPrintf("%4.3f",data[j*M+i]);mexPrintf(" ");}}编译完成后,用下面的命令测试一下:a=1:10;b=[a;a+1];show(a)show(b)需要注意的是,在Matlab里,矩阵第一行是从1开始的,而在C语言中,第一行的序数为零,Matlab里的矩阵元素b(i,j)在传递到C中的一维数组大data后对应于data[j*M+i]。输入数据是在函数调用之前已经在Matlab里申请了内存的,由于mex函数与Matlab共用同一个地址空间,因而在prhs[]里传递指针就可以达到参数传递的目的。但是,输出参数却需要在mex函数内申请到内存空间,才能将指针放在plhs[]中传递出去。由于返回指针类型必须是mxArray,所以Matlab专门提供了一个函数:mxCreateDoubleMatrix来实现内存的申请,函数原型如下:mxArray*mxCreateDoubleMatrix(intm,intn,mxComplexityComplexFlag)m:待申请矩阵的行数n:待申请矩阵的列数为矩阵申请内存后,得到的是mxArray类型的指针,就可以放在plhs[]里传递回去了。但是对这个新矩阵的处理,却要在函数内完成,这时就需要用到前面介绍的mxGetPr。使用mxGetPr获得指向这个矩阵中数据区的指针(double类型)后,就可以对这个矩阵进行各种操作和运算了。下面的程序是在上面的show.c的基础上稍作改变得到的,功能是将输//reverse.c1.0#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){double*inData;double*outData;intM,N;inti,j;inData=mxGetPr(prhs[0]);M=mxGetM(prhs[0]);N=mxGetN(prhs[0]);plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL);outData=mxGetPr(plhs[0]);for(i=0;i<M;i++)for(j=0;j<N;j++)outData[j*M+i]=inData[(N-1-j)*M+i];}当然,Matlab里使用到的并不是只有double类型这一种矩阵,还有字符串类型、稀疏矩阵、结构类型矩阵等等,并提供了相应的处理函数。本文用到编制mex程序中最经常遇到的一些函数,其余的详细情况清参考Apiref.pdf。通过前面两部分的介绍,大家对参数的输入和输出方法应该有了基本的了解。具备了这些知识,就能够满足一般的编程需要了。但这些程序还有些小的缺陷,以前面介绍的re由于前面的例程中没有对输入、输出参数的数目及类型进行检查,导致程序的容错性很差,以下程序则容错性较好#include"mex.h"voidmexFunction(intnlhs,mxArray*plhs[],intnrhs,constmxArray*prhs[]){double*inData;double*outData;intM,N;//异常处理//异常处理if(nrhs!=1)mexErrMsgTxt("USAGE:b=reverse(a) ");if(!mxIsDouble(prhs[0]))mexErrMsgTxt("theInputMatrixmustbedouble! ");inData=mxGetPr(prhs[0]);M=mxGetM(prhs[0]);N=mxGetN(prhs[0]);plhs[0]=mxCreateDoubleMatrix(M,N,mxREAL);outData=mxGetPr(plhs[0]);for(i=0;i<M;i++)for(j=0;j<N;j++)outData[j*M+i]=inData[(N-1-j)*M+i];}在上面的异常处理中,使用了两个新的函数:mexErrMsgTxt和mxIsDouble。MexErrMsgTxt在给出出错提示的同时退出当前程序的运行。MxIsDouble则用于判断mxArray中的数据是否double类型。当然Matlab还提供了许多用于判断其他数据类型的函数,这里不加详述。需要说明的是,Matlab提供的API中,函数前缀有mex-和mx-两种。带mx-前缀的大多是对mxArray数据进行操作的函数,如mxIsDouble,mxCreateDoubleMatrix等等。而带mx前缀的则大多是与Matlab环境进行交互的函数,如mexPrintf,mxErrMsgTxt等等。了解了这一点,对在Apiref.pdf中查找所需的函数很有帮助。至此为止,使用C编写mex函数的基本过程已经介绍完了。

如何设置matlab 编译器 mex

通常有兰特(平均随机数),randn(正态分布的随机数),并依此类推。点击看详细种子属性可以通过种子进行设定,如:点击看详细>> randn(“种子”,0); >> randn(5)ANS =点击看详细1.1650 1.6961 -1.4462 -0.3600 -0.0449 0.6268 0.0591 -0.7012 -0.1356 -0.7989 0.0751 1.7971 1.2460 -1.3493 -0.7652 0.3516 0.2641 -0.6390 -1.2704 0.8617 -0.6965 0.8717 0.5774 0.9846 -0.0562 中国这通常使用来设置随机数生成。

MATLAB2014b怎么在Linux14.04下编译mex文件

.M文件是保存一段代码的文件,类似于C语言中的一个函数体; 这也是MATLAB中最常见的文件保存格式之一 .MEX文件是一种“可在matlab环境中调用的C(或fortran)语言衍生程序”。也就是说,MEX文件的源码文件是由C或Fortran语言编写的,后经matlab编。

如何在matlab中运行mex文件

把file.mex放到路径里,然后file(参数列表)就可以,具体要看帮助

matlab进行mex-setup设置,出现错误,怎么解决?

mex后面需要一个空格

matlab调用c或c++源程序,能够头文件和源文件分开写,然后mex文件调用头文件

具体描述一下

MATLAB mex 找不到编译器怎么办?

①选y后,MATLAB会列出当前机器上已经安装的、且与当前MATLAB版本兼容的所有C编译器,一般而言,MATLAB都会自带一个LCC编译器,然而LCC目前仅支持32位的MATLAB,所以你的机器上没有。②选n后,MATLAB会列出所有与当前MATLAB版本兼容的C编译器类型(不管你是否已经安装,用于帮助用户选择合适的C编译器),你机器上已经安装的2个编译器,VC6.0:MATLAB从R2010b之后不再支持,所以选项里看不到;而SDK7.1选n时可以看到([11]),但选y时没有跳出,是因为MATLAB没有正确定位SDK。③解决方法:方法一:如果以缺省选项安装了SDK7.1(不改变默认安装路径),可以尝试输入n后,选择 [14] (注意:是14,不是11!),强制定位该编译器(网上有人用这种方法成功了:http://mlinking.blog.163.com/blog/static/185801922201331464626365/)方法二:重新安装MATLAB,安装时选择32位进行安装,则自带LCC编译器。方法三:选择适配的VS版本,下载安装后,重新配置MEX命令。简单讲,编译器就是将“一种语言(通常为高级语言)”翻译为“另一种语言(通常为低级语言)”的程序。一个现代编译器的主要工作流程:源代码 (source code) → 预处理器 (preprocessor) → 编译器 (compiler) → 目标代码 (object code) → 链接器 (Linker) → 可执行程序 (executables)高级计算机语言便于人编写,阅读交流,维护。机器语言是计算机能直接解读、运行的。编译器将汇编或高级计算机语言源程序(Source program)作为输入,翻译成目标语言(Target language)机器代码的等价程序。源代码一般为高级语言 (High-level language), 如Pascal、C、C++、Java、汉语编程等或汇编语言,而目标则是机器语言的目标代码(Object code),有时也称作机器代码(Machine code)。对于C#、VB等高级语言而言,此时编译器完成的功能是把源码(SourceCode)编译成通用中间语言(MSIL/CIL)的字节码(ByteCode)。最后运行的时候通过通用语言运行库的转换,编程最终可以被CPU直接计算的机器码(NativeCode)。

matlab如何编译mex文件

先用mbuild -setup选择安装编译器再用指令mex c文件件名编译

请教关于利用Matlab中“mex”命令编译C程序的问题

1.准备好C语言程序,清楚C语言的入口函数2.编写mexfunction函数。mexfunction函数为C语言与MATLAB语言的接口函数。调用实例在mylinedetect.c文件中.在MATLAB中调用mex指令编译相关文件,将C语言编译为MEX文件。3.编译完成后,生成mylinedetect.mexw32或mylinedetect.mexw64文件,此文件即mex文件,用于MATLAB与C语言接口函数.4.编译完成之后,编写MATLAB函数,调用MEX文件。以MEX文件的形式调用编译完成的C语言函数[o1,o2]=mylinedetect(double(X).");......5.输出结果,上述linedetect函数完成图像中直线检测功能,带入MATLAB中调用后形成结果。

已知一个离散序列,怎么用matlab求他的共轭对称分量,还有共轭反对称分量?最好举个例子,思路也行。

请参考 http://wenku.baidu.com/view/a659673283c4bb4cf7ecd1fc.html

用MATLAB运行程序时,结果显示未对输出参数 "feature"(可能还包括其他参数)赋值。

feature_lattice函数里的返回参数feature没有赋值

Shannon Labrie的《Take Me》 歌词

歌曲名:Take Me歌手:Shannon Labrie专辑:Just Be HonestTake Me Away(我走)I cannot find a wayTo describe itIts thereInsideAll I do is hideI wishThat itWould just go awayWhat wouldYou do?You do?If you knew...What would you do?All the painI thought I knewAll these thoughts lead back to youBack to whatWas never saidBack and forthInside my headI cant handle this confusionIm unableCome and take me awayI feelLike IAm aloneAll byMyselfI need to get around thisMy wordsAre coldI dont want them to hurt youIf IShow youI dont think youd understandCause no one understsandsAll the pain]I thought I knewAll these thoughts lead back to youBack to whatWas never saidBack and forthInside my headI cant handle this confusionIm unableCome and take me awayIm going nowhereOn and on and...Im getting nowhereOn and on and...Take me awayIm going nowhereOn and on and...Up and on andUp and onAll the painI thought I knewAll these thoughts lead back to youBack to whatWas never saidBack and forthInside my headI cant handle this confusionIm unableCome and take me awayTake me awayTake me awayhttp://music.baidu.com/song/58823558

matlab画三个子图,左边两个图纵向排列,右边一个图,大小与左边两个图加一起一样大。

示例代码:subplot(2,2,1)plot(peaks)subplot(1,2,2)plot(cos(0:.1:10))subplot(2,2,3)bar(rand(1,5))

【Matlab的图形绘制和频谱计算】+和+【基本信号的表达式】

不知道学了matlab没有?如果没有,在这里是说不清楚的。如果已经学了,建议找本“matlab与信号处理”的书,一般里面都有你需要的程序的。因为这些程序非常经典。

matlab中colorbar怎么使用?

第一,为峰值函数(peaks)的图形添加色标。启动MATLAB,新建脚本,输入如下代码:close all; clear all; clcfigure(1)surf(peaks(30))colorbar("YTickLabel",{"Freezing","Cold","Cool",..."Neutral","Warm","Hot","Burning","Nuclear"})第二,保存和运行上述脚本,得到峰值函数(peaks)的图形(figure 1),并且图形右侧添加了色标。第三,在上述脚本的基础上,接着输入如下代码:figure(2)contourf(peaks(30))colormap coolcolorbar("location","SouthOutside")其中("location","southoutside")控制色标处于图形中的位置,还可以取North,South,East,West,Northoutside,Southoutside,Eastoutside,Westoutside。第四,保存和运行上述脚本,得到图像figure 2,如下图,色标位于图形底部。第五,利用subplot对上述脚本进行改进,将figure 1与figure 2画在一张图。脚本改进如下:close all; clear all; clc%figure(1)subplot(2,1,1)surf(peaks(30))colorbar("YTickLabel",{"Freezing","Cold","Cool",..."Neutral","Warm","Hot","Burning","Nuclear"})%figure(2)subplot(2,1,2)contourf(peaks(30))colormap coolcolorbar("location","SouthOutside")第六,保存和运行上述改进的脚本,figure 1与figure 2画在一张图,并且均添加了色标(colorbar)。

高高手帮忙啊!!!!!求matlab能算出一组数列第一个峰值和谷值的程序!

使用findpeaks即可满足你的要求! help findpeaks FINDPEAKS Find local peaks in data PKS = FINDPEAKS(X) finds local peaks in the data vector X. A local peak is defined as a data sample which is either larger than the two neighboring samples or is equal to Inf. [PKS,LOCS]= FINDPEAKS(X) also returns the indices LOCS at which the peaks occur. [...] = FINDPEAKS(X,"MINPEAKHEIGHT",MPH) finds only those peaks that are greater than MINPEAKHEIGHT MPH. Specifying a minimum peak height may help in reducing the processing time. MPH is a real valued scalar. The default value of MPH is -Inf. [...] = FINDPEAKS(X,"MINPEAKDISTANCE",MPD) finds peaks that are at least separated by MINPEAKDISTANCE MPD. MPD is a positive integer valued scalar. This parameter may be specified to ignore smaller peaks that may occur in close proximity to a large local peak. For example, if a large local peak occurs at index N, then all smaller peaks in the range (N-MPD, N+MPD) are ignored. If not specified, MPD is assigned a value of one. [...] = FINDPEAKS(X,"THRESHOLD",TH)finds peaks that are at least greater than their neighbors by the THRESHOLD TH. TH is real valued scalar greater than or equal to zero. The default value of TH is zero. [...] = FINDPEAKS(X,"NPEAKS",NP) specifies the maximum number of peaks to be found. NP is an integer greater than zero. If not specified, all peaks are returned. [...] = FINDPEAKS(X,"SORTSTR",STR) specifies the direction of sorting of peaks. STR can take values of "ascend","descend" or "none". If not specified, STR takes the value of "none" and the peaks are returned in the order of their occurrence.

matlab 在for循环中画不同颜色的图怎么弄?

帮你快速入门MATLAB绘图篇,附软件教程工控自动化专家2019-02-181. 基本xy平面绘图命令MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientific visualization)。本节将介绍MATLAB基本xy平面及xyz空间的各项绘图命令,包含一维曲线及二维曲面的绘制、列印及存档。plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x 及y座标。下例可画出一条正弦曲线:close all;x=linspace(0, 2*pi, 100); % 100个点的x座标y=sin(x); % 对应的y座标plot(x,y);小整理:MATLAB基本绘图函数plot: x轴和y轴均为线性刻度(Linear scale)loglog: x轴和y轴均为对数刻度(Logarithmic scale)semilogx: x轴为对数刻度,y轴为线性刻度semilogy: x轴为线性刻度,y轴为对数刻度若要画出多条曲线,只需将座标对依次放入plot函数即可:plot(x, sin(x), x, cos(x));若要改变颜色,在座标对後面加上相关字串即可:plot(x, sin(x), "c", x, cos(x), "g");若要同时改变颜色及图线型态(Line style),也是在座标对後面加上相关字串即可:plot(x, sin(x), "co", x, cos(x), "g*");小整理:plot绘图函数的叁数字元颜色字元图线型态y 黄色。点k黑色o 圆w 白色x xb 蓝色+ +g 绿色* *r 红色- 实线c 亮青色: 点线m 锰紫色-. 点虚线-- 虚线图形完成後,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围:axis([0, 6, -1.2, 1.2]);此外,MATLAB也可对图形加上各种注解与处理:xlabel("Input Value"); % x轴注解ylabel("Function Value"); % y轴注解title("Two Trigonometric Functions"); % 图形标题legend("y = sin(x)","y = cos(x)"); % 图形注解grid on; % 显示格线我们可用subplot来同时画出数个小图形於同一个视窗之中:subplot(2,2,1); plot(x, sin(x));subplot(2,2,2); plot(x, cos(x));subplot(2,2,3); plot(x, sinh(x));subplot(2,2,4); plot(x, cosh(x));MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。小整理:其他各种二维绘图函数bar 长条图errorbar 图形加上误差范围fplot 较精确的函数图形polar 极座标图hist 累计图rose 极座标累计图stairs 阶梯图stem 针状图fill 实心图feather 羽毛图compass 罗盘图quiver 向量场图以下我们针对每个函数举例。当资料点数量不多时,长条图是很适合的表示方式:close all; % 关闭所有的图形视窗x=1:10;y=rand(size(x));bar(x,y);如果已知资料的误差量,就可用errorbar来表示。下例以单位标准差来做资的误差量:x = linspace(0,2*pi,30);y = sin(x);e = std(y)*ones(size(x));errorbar(x,y,e)对於变化剧烈的函数,可用fplot来进行较精确的绘图,会对剧烈变化处进行较密集的取样,如下例:fplot("sin(1/x)", [0.02 0.2]); % [0.02 0.2]是绘图范围若要产生极座标图形,可用polar:theta=linspace(0, 2*pi);r=cos(4*theta);polar(theta, r);对於大量的资料,我们可用hist来显示资料的分 情况和统计特性。下面几个命令可用来验证randn产生的高斯乱数分 :x=randn(5000, 1); % 产生5000个 m=0,s=1 的高斯乱数hist(x,20); % 20代表长条的个数rose和hist很接近,只不过是将资料大小视为角度,资料个数视为距离,并用极座标绘制表示:x=randn(1000, 1);rose(x);stairs可画出阶梯图:x=linspace(0,10,50);y=sin(x).*exp(-x/3);stairs(x,y);stems可产生针状图,常被用来绘制数位讯号:x=linspace(0,10,50);y=sin(x).*exp(-x/3);stem(x,y);stairs将资料点视为多边行顶点,并将此多边行涂上颜色:x=linspace(0,10,50);y=sin(x).*exp(-x/3);fill(x,y,"b"); % "b"为蓝色feather将每一个资料点视复数,并以箭号画出:theta=linspace(0, 2*pi, 20);z = cos(theta)+i*sin(theta);feather(z);compass和feather很接近,只是每个箭号的起点都在圆点:theta=linspace(0, 2*pi, 20);z = cos(theta)+i*sin(theta);compass(z);2.基本XYZ立体绘图命令在科学目视表示(Scientific visualization)中,三度空间的立体图是一个非常重要的技巧。本章将介绍MATLAB基本XYZ三度空间的各项绘图命令。mesh和plot是三度空间立体绘图的基本命令,mesh可画出立体网状图,plot则可画出立体曲面图,两者产生的图形都会依高度而有不同颜色。下列命令可画出由函数<图片>形成的立体网状图:x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵mesh(xx, yy, zz); % 画出立体网状图surf和mesh的用法类似:x=linspace(-2, 2, 25); % 在x轴上取25点y=linspace(-2, 2, 25); % 在y轴上取25点[xx,yy]=meshgrid(x, y); % xx和yy都是21x21的矩阵zz=xx.*exp(-xx.^2-yy.^2); % 计算函数值,zz也是21x21的矩阵surf(xx, yy, zz); % 画出立体曲面图为了方便测试立体绘图,MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点要画出此函数的最快方法即是直接键入peaks:peaksz = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ...- 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ...- 1/3*exp(-(x+1).^2 - y.^2)我们亦可对peaks函数取点,再以各种不同方法进行绘图。meshz可将曲面加上围裙:[x,y,z]=peaks;meshz(x,y,z);axis([-inf inf -inf inf -inf inf]);waterfall可在x方向或y方向产生水流效果:[x,y,z]=peaks;waterfall(x,y,z);axis([-inf inf -inf inf -inf inf]);下列命令产生在y方向的水流效果:[x,y,z]=peaks;waterfall(x",y",z");axis([-inf inf -inf inf -inf inf]);meshc同时画出网状图与等高线:[x,y,z]=peaks;meshc(x,y,z);axis([-inf inf -inf inf -inf inf]);surfc同时画出曲面图与等高线:[x,y,z]=peaks;surfc(x,y,z);axis([-inf inf -inf inf -inf inf]);contour3画出曲面在三度空间中的等高线:contour3(peaks, 20);axis([-inf inf -inf inf -inf inf]);contour画出曲面等高线在XY平面的投影:contour(peaks, 20);plot3可画出三度空间中的曲线:t=linspace(0,20*pi, 501);plot3(t.*sin(t), t.*cos(t), t);亦可同时画出两条三度空间中的曲线:t=linspace(0, 10*pi, 501);plot3(t.*sin(t), t.*cos(t), t, t.*sin(t), t.*cos(t), -t);3. 三维网图的高级处理3a. 消隐处理例.比较网图消隐前后的图形z=peaks(50);subplot(2,1,1);mesh(z);title("消隐前的网图")hidden offsubplot(2,1,2)mesh(z);title("消隐后的网图")hidden oncolormap([0 0 1])3b. 裁剪处理利用不定数NaN的特点,可以对网图进行裁剪处理例.图形裁剪处理P=peaks(30);subplot(2,1,1);mesh(P);title("裁剪前的网图")subplot(2,1,2);P(20:23,9:15)=NaN*ones(4,7); %剪孔meshz(P) %垂帘网线图title("裁剪后的网图")colormap([0 0 1]) %蓝色网线4. 三维旋转体的绘制为了一些专业用户可以更方便地绘制出三维旋转体,MATLAB专门提供了2个函数:柱面函数cylinder和球面函数sphere(1) 柱面图柱面图绘制由函数cylinder实现.[X,Y,Z]=cylinder(R,N) 此函数以母线向量R生成单位柱面.母线向量R是在单位高度里等分刻度上定义的半径向量.N为旋转圆周上的分格线的条数.可以用surf(X,Y,Z)来表示此柱面.[X,Y,Z]=cylinder(R)或[X,Y,Z]=cylinder此形式为默认N=20且R=[1 1]例.柱面函数演示举例x=0:pi/20:pi*3;r=5+cos(x);[a,b,c]=cylinder(r,30);mesh(a,b,c)例.旋转柱面图.r=abs(exp(-0.25*t).*sin(t));t=0:pi/12:3*pi;r=abs(exp(-0.25*t).*sin(t));[X,Y,Z]=cylinder(r,30);mesh(X,Y,Z)colormap([1 0 0])(2) 球面图球面图绘制由函数sphere来实现[X,Y,Z]=sphere(N) 此函数生成3个(N+1)*(N+1)的矩阵,利用函数 surf(X,Y,Z) 可产生单位球面.[X,Y,Z]=sphere 此形式使用了默认值N=20.Sphere(N) 只是绘制了球面图而不返回任何值.例.绘制地球表面的气温分布示意图.[a,b,c]=sphere(40);t=abs(c);surf(a,b,c,t);axis("equal") %此两句控制坐标轴的大小相同.axis("square")colormap("hot")了解更多搜索matlab被禁事件反思自学matlab有什么好处零基础matlab学多久matlab学习心得与总结精通matlab是什么体验自学matlab有必要吗

请问matlab中[x,y,z]=peaks(20)中x、y、z是什么意思

曲面peaks 上点的坐标,可用mesh或surf绘出

matlab 中peaks(30)

peaks是一个函数,其中有2个变量。由平移和放缩高斯分布函数获得。这里输入n(=30)是说输出30*30的矩阵,并显示。 >> peaks(30)z = 3*(1-x).^2.*exp(-(x.^2) - (y+1).^2) ... - 10*(x/5 - x.^3 - y.^5).*exp(-x.^2-y.^2) ... - 1/3*exp(-(x+1).^2 - y.^2) [X,Y,Z] = peaks(30);得到的X、Y、Z为30*30的矩阵

已知X、Y坐标数值,如何用MATLAB绘制曲线

plot(x,y,"s")s为可选参数具体可参考下面Matlab入门教程--二维绘图2.基本xy平面绘图命令MATLAB不但擅长於矩阵相关的数值运算,也适合用在各种科学目视表示(Scientificvisualization)。本节将介绍MATLAB基本xy平面及xyz空间的各项绘图命令,包含一维曲线及二维曲面的绘制、列印及存档。plot是绘制一维曲线的基本函数,但在使用此函数之前,我们需先定义曲线上每一点的x及y座标。下例可画出一条正弦曲线:closeall;x=linspace(0,2*pi,100);%100个点的x座标y=sin(x);%对应的y座标plot(x,y);====================================================小整理:MATLAB基本绘图函数plot:x轴和y轴均为线性刻度(Linearscale)loglog:x轴和y轴均为对数刻度(Logarithmicscale)semilogx:x轴为对数刻度,y轴为线性刻度semilogy:x轴为线性刻度,y轴为对数刻度====================================================若要画出多条曲线,只需将座标对依次放入plot函数即可:plot(x,sin(x),x,cos(x));若要改变颜色,在座标对后面加上相关字串即可:plot(x,sin(x),"c",x,cos(x),"g");若要同时改变颜色及图线型态(Linestyle),也是在座标对后面加上相关字串即可:plot(x,sin(x),"co",x,cos(x),"g*");====================================================小整理:plot绘图函数的叁数字元颜色字元图线型态y黄色.点k黑色o圆w白色xxb蓝色++g绿色**r红色-实线c亮青色:点线m锰紫色-.点虚线--虚线====================================================图形完成后,我们可用axis([xmin,xmax,ymin,ymax])函数来调整图轴的范围:axis([0,6,-1.2,1.2]);此外,MATLAB也可对图形加上各种注解与处理:xlabel("InputValue");%x轴注解ylabel("FunctionValue");%y轴注解title("TwoTrigonometricFunctions");%图形标题legend("y=sin(x)","y=cos(x)");%图形注解gridon;%显示格线我们可用subplot来同时画出数个小图形於同一个视窗之中:subplot(2,2,1);plot(x,sin(x));subplot(2,2,2);plot(x,cos(x));subplot(2,2,3);plot(x,sinh(x));subplot(2,2,4);plot(x,cosh(x));MATLAB还有其他各种二维绘图函数,以适合不同的应用,详见下表。====================================================小整理:其他各种二维绘图函数bar长条图errorbar图形加上误差范围fplot较精确的函数图形polar极座标图hist累计图rose极座标累计图stairs阶梯图stem针状图fill实心图feather羽毛图compass罗盘图quiver向量场图====================================================

我的电脑是DELL的,装上MATLAB后,peaks,函数就不能用,

uygepudgquDGYPUAYdhpYPAUYF8udfypD8UYPD8YD8Y8SDY8IYYF8YFI8YIC

matlab里peaks函数是干什么的? 具体具体!汉语汉语!

MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点

Matlab 中的peaks函数的具体用法

help peaks

matlab 中peaks(30)

peaks是一个函数,其中有2个变量。由平移和放缩高斯分布函数获得。这里输入n(=30)是说输出30*30的矩阵,并显示。>>peaks(30)z= 3*(1-x).^2.*exp(-(x.^2)-(y+1).^2)...-10*(x/5-x.^3-y.^5).*exp(-x.^2-y.^2)...-1/3*exp(-(x+1).^2-y.^2)[X,Y,Z]=peaks(30);得到的X、Y、Z为30*30的矩阵
 首页 上一页  1 2 3 4 5 6 7 8  下一页  尾页