matlab一运行就崩溃疯狂报错,求解答


Errorin==>Hr_Type2at3n=[0:1:L];n=n-0.5;w=[0:1:500]'*pi/500;Hr=cos(w*n)*b';Errorin==>a...
Error in ==> Hr_Type2 at 3n = [0:1:L];n=n-0.5;w = [0:1:500]'*pi/500;Hr = cos(w*n)*b';Error in ==> a7_10 at 31[Hr,ww,b,L]=Hr_Type2(h);??? Error using ==> mtimesInner matrix dimensions must agree.
展开选择擅长的领域继续答题?
{@each tagList as item}
${item.tagName}
{@/each}
手机回答更方便,互动更有趣,下载APP
}
1.错误的描述及解决办法使用Matlab和C++混合编程时,即编写完mex文件,调用时,经常会提示下面的错误: 触发上述错误的情况: 1.如果一进入mexFunction函数就报错,即不会命中函数中设置的任何断点,也会报错,那么说明,你忘记了将mex -O 改称为mex -g,并且程序本身也有问题。 2.mex指令编译mex文件时,链接使用的库不对(虽然可以编译成功),,但在使用时也会报错,例如在mexFunction中使用String等其他类型不会报错,一使用Mat对象就会报错,原因是应该使用opencv的release版本的库,却使用了OpenCV的debug版本的库。 3. mex文件在.m文件中调用,第一次运行.m文件不会报错,第二次运行.m文件就会触发mex文件中的错误。 4. 更加离谱的是:mex文件在.m文件中调用,多次运行不会报错。但是,如果在另外一个.m文件中调用含有mex文件的.m文件,则会发生,多次运行另外一个.m文件会触发错误。 5. 或者还存在其他千奇百怪的错误。那么怎么解决这样的问题呢? 千万不要指望通过调试mex文件的方式来解决。即通过将mex文件通过vs打开,并且通过vs将matlab进程添加进去的方式来跟踪,这样可能一无所获,而且一运行到某个地方就会使得matlab崩溃。 http://cn.mathworks.com/help/matlab/matlab_external/debugging-on-microsoft-windows-platforms.html解决方法: Matlab报错,肯定是自己程序的原因。如变量未初始化就使用了,或者野指针,空指针,或者就是除以0等。万能的解决方法,就是产生同Matlab同样的数据,即利用同样的数据,完全在VS中进行调试,VS编译器会给你一个合理的报错解释,而不像Matlab那样。其他Matlab/C++混合编程时,出现: Matlab has encountered an internal problem and needs to close. The unsaved information you were working on may be lost. We are sorry for the inconvenience. Click End Now to close Matlab now. … …. 使用VS2010在mexFuntion.cpp文件中设置断点调试时,有时会报错,有时候又可以通过。就有可能会出现这样的情况:使用mex指令对mexFuntion.cpp编译后,在matlab程序中调用该函数,第一次执行时,程序不报错,当在执行第二次时,就会报错。报错的原因就是,如:空指针,变量未分配内存而使用….例如:vector<int> vec;
vec[0]=1;//error, 未分配内存。
vec[1]=2;mxArray *ptr=mxGetField(prhs[0],0,'name');
//if ptr==NULL或者0
char *strName=mxArrayToString(ptr);typedef struct person
{
int age;
char name[10];
}Person;
typedef struct man
{
int sex;
Person *p;
}Man;
Man* pMan=(Man *)malloc(sizeof(Man));
//use pMan
pMan->p->age=10;//error,变量age没有分配内存.可以将Man中的成员Person *p改为Person p.2.在mex.cpp文件的入口函数mexFunction处设置断点,但是程序不跑断点直接出错原因是在mex编译的时候,需要将mex -o改成 mex -g。(有时候改来改去忘了改回来,经常犯这样的错误)。3.在使用compile.m文件对mex.cpp进行编译的时候,有时候编译能够成功,而且还通过了,但是在进行调试的时候会出现莫名其妙的错误,同上一样也是出现下面的错误: Matlab has encountered an internal problem and needs to close.此时,如果不是上面类似的内存泄漏的话,那问题就在于compile.m的编译了。 例如,在compile.m文件中用到了OpenCV的lib,我们采用了带d的:opencvLibs = ' -lopencv_core249d -lopencv_highgui249d -lopencv_imgproc249d ';则程序调用plhs[0]=MxArray(mat)时候就会报错,即将mat类型的对象转换为plhs[0]时会报错,但是将plhs[0]=MaxArray(string)时候正常运行,即将string类型的对象转换为plhs[0]时不会报错。然而我将用的OpenCV lib改为:opencvLibs = ' -lopencv_core249 -lopencv_highgui249 -lopencv_imgproc249 ';程序正常运行。}
*我的matlab是32位2015b版,64位也差不多在网站上下载的版本嗯,这个版本选择也是纠结了很久,我这个版本,一共有10个part的压缩包,以上的版本应该part越多,当然体积也越大在下载的时候,看见每一个part的大小都是一样的,所以就下了一个,解压都解压不出来,笑死!就是得把所有的part都解压出来,然后解压一个part就行总体上,前后共分为安装目录,和安装包地址,要将解压出来的文件夹下的(直接解压出来crack)同时在同级文件夹中对那个iso文件解压,出现安装包,直接安装序列号在crack文件夹里面,我的里面还有一层crack文件夹,然后里面的readme文件,key后面的就是我这是一堆的1这是我的安装目录,因为c盘里也有源数据在,最好分开这一步就安装成了,下一步,安装成功!之后就得去激活了去打开安装目录下的bin文件夹中,activate_matlab.exe即是用来激活的然后使用无网络激活,浏览到安装包下的crack下的license_R2015b.lic各位看官安装这个matlab应该只有替换libmwservices.dll是重点,这个txt文件说的很清楚,当时也没仔细看,各位先试一下只用这一步,看能不能直接打开matlab我,,,哈哈,总会出现各种错误1、若是出现了什么,java.launcher(应该没打错)....的报错,是因为打开的是安装包下的启动程序,应该在安装目录下进行启动,
或者如果安装的时候设置了快捷方式,那就应该不会出现这种问题了
2、若是还出现114报错,那可能需要修改更多的东西,比如把安装包下的bin和toolbox都替换掉安装目录下对应的文件夹,也许就解决了
3、若是使用的压缩出来的许可证了又证,问题是还证不好,那就是许可证失效,直接替换成这个许可证:
替换可用许可证该网址有:https://blog.csdn.net/liuhongyue/article/details/78541148
这样安装的matlab没有问题自然最好有问题的话,以下:https://blog.csdn.net/m0_50027019/article/details/119547792?spm=1001.2014.3001.5501}

我要回帖

更多关于 matlab一运行就崩溃 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信