找回密码
 注册
Simdroid-非首页
查看: 82|回复: 0

【备份】FAQ Beta(2009.11.01)

  [复制链接]
发表于 2009-11-2 02:13:56 | 显示全部楼层 |阅读模式 来自 湖北武汉
本帖最后由 messenger 于 2009-11-2 02:16 编辑

问题索引
A. 新手提问入门

      A1   为什么我的帖子没有人回复?
      A2   我该如何提问?
      A3   MATLAB有中文版吗?
      A4   为什么版面上很少有MATLAB的教程资料下载?     
      A5   学习Matlab基础知识有哪些书籍?
      A6   如何知道安装了哪些toolbox?
      A7  为什么所贴的代码中,有些代码会变为笑脸?


B. 基础编程

      B1   如何循环生成文件名?
      B2   如何在程序中动态自定义变量名?
      B3   如何在指定的AXES上作图?
      B4   如何去掉矩阵的某些行/列?
      B5   如何使绘图的坐标轴的刻度标示显示为月份?
      B6   如何建立新的文件夹?
      B7   如何将命令行中的已经敲过的命令保存到一个指定的.m文件里,以便以后查看和调用?
      B8   矩阵中的数据如何设置使其保留小数点后2位?
      B9   如何一次(用不循环)形成等间隔递增矩阵?
      B10   如何不显示小数末尾的零


C. 数学计算

      C1   一个随机变量可以取1 2 3 4 5这5个值。每个值的概率分别为0.1 0.3 0.25 0.25 0.1。如何产生?
      C2   如何将参数传递到solve求解的方程组里面?
      C3   如何将参数传递到fsolve求解的方程组里面?
      C4   如何进行一般区域上的2、3维积分?
      C5   如何对分段函数进行积分?
      C6   元素为0、1矩阵中,如何对矩阵分割并将每个子矩阵中不全为零的个数相加?
      C7   为什么Matlab在计算(-8)^(1/3)时返回一个复数?





D. 数据处理及可视化

      D1   如何生成gif的动画文件?
      D2   在surfc、meshc命令所画图中,如何调整等高线所在平面的位置?
      D3   在点阵图中如何获取的曲线点的坐标?
      D4   怎么把figure的框架和白色背景去掉,让imagesc画出的图占满整个屏幕?
      D5   如何做一个画中画式的局部放大图?
      D6   如何画不规则离散数据的三维曲面图形?
      D7   如何将图例(legend)分栏?
      D8   Matlab有哪些绘图命令?命令名及其相应的预览图是什么?
      D9   用Mesh、Surf等三维绘图命令时,如何使画出的图为黑白图像?



E. GUI

      E1   如何使窗体不能移动?
      E2   GUI如何添加启动界面?
      E3   如何给GUI添加背景图片?
      E4   如何去掉GUI编译后的DOS黑窗?
      E5   如何在GUI中调用制作的帮助文件?
      E6   如何使GUI最大化?
      E7   如何使GUI支持鼠标滚轮?
      E8   如何使GUI居中?


F. 专业计算

      F1   如何使用Matlab来进行频谱分析?
   
  F2   如何根据曲线来求穿越次数?
      F3   在用遗传算法做多目标优化时,怎么把其余的pareto front 图画出来?
      F4   如何使用Matlab来进行频谱分析?




G. Simulink仿真

      G1   如何把整个模型文件中某一个子系统的名字替换成另一个名字?
      G2   什么是SimHydraulics模块?
      G3   RTW将simulink模型生成C代码后,在VC中如何调整参数?
      G4   怎么获得一个模型中模块和变量的数量?
      G5   为什么无法保存仿真结果 .mdl 文件?

   


H. 混合编程

    H1   VC调用MATLAB C++库时,包含"matlab.hpp",为何找不到'strstream.h'?
    H2   MATLAB7.x+VC混合编程为什么提示找不到matlab.hpp?
    H3  如何发布MATLAB7.X编译后的程序?
    H4   MATLAB和VC混合编程为什么提示无法打开libmatpm.lib  
    H5  混合编程时,Matlab的哪些命令不能被调用?
    H6  VC调用MATLAB生成的图片时,为何图片显示时却一闪而过
    H7  在编写mexw32文件时,用什么函数来实现从matlab传递来一个字符串参数?



I. 常见错误及解决

    I1  为什么会有如下错误信息:??? Attempt to execute SCRIPT XXXX as a function..hpp?

    I2  在通过Matlab调用Fortran程序时,为什么在链接时会有如下错误信息mexfile_CaclT90.obj : error LNK2001: unresolved external symbol _MEXERRMSGTXT@8

    I3  在用GAOT工具箱来求解ga问题时,为什么会有如下错误信息:??? Input argument "sol" is undefined.

    I4  在用rtw的方式将simulink模型与vc混合编程的时候,出现了下个错误:“simstruc.h(282) : fatal error C1189: #error :  Unrecognized use.” 如何解决?

    I5  在Matlab中输入mupad命令,为什么会出现 can not start engine 的错误信息?

    I6  在ga(遗传算法)优化计算中,为什么计算结果显示“Constraint function must return real value.”的错误信息?





J. 文件输入、输出

    J1  如何使用文本文件(.txt) 对数据进行存取?
    J2  如何按照文件生成的时间顺序,读入文件的文件名?
    J3  怎么可以让plot画出的图不显示出来,直接输出成一个bmp文件?
    J4  Matlab结果如何保存,以供C语言读取?



------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------  正文分界线  --------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

A1
     Q:为什么我的帖子没有人回复?
     A: 没有回复或者很少回复的原因很多,我这里列举一二
            1 . 与专业结合太强。不是路过这里的每个人都和你是一个专业的。  
                 有谁有反应精馏的例子啊?
            2 . 所提的问题,版面已经讨论了很多很多遍了。甚至在同一版面就有一样的主题
            3 . 题目标题没有写好。题目标题与提问内容豪不相干。
A2
     Q:我该如何提问?
     A:起个好标题,写上好内容。
           好的标题是成功得到解答的基石。
           这里说的好的标题不是指“菜鸟求”,“跪求”,“裸求”,“急求”等看上去醒目的文字
           而是包含如下信息的文字:
           1 。包含MATLAB的版本
                  版本不一样,解决问题的答案也不一样。
           2。 包含问题的所属领域
                  比如属于基础编程,属于GUI,属于混合编程
          好的内容是值:
           1。 你的MATLAB版本
                  版本不一样,解决问题的答案也不一样
           2。 你的MATLAB基础,便于回答者根据你的基础选择是否提示还是直接写程序等等
           3。 你的尝试
                  根据你的实际问题,你的解决思路,算法思路,MATLAB实现
           4。 错误提示
                  没有得到预期的结果,中间是否有错误提示?请帖你的错误提示
           5。 相关代码
                  贴导致错误的,相关的,可以运行的代码。
                  贴之前请自己运行一番,想一想,是否有遗漏的M文件而导致回答者无法运行你的程序
           参考链接:http://forum.simwe.com/thread-903452-1-1.html


A3
   Q:
   MATLAB有中文版吗?
   A:
  没有。不过,你可以试试junziyang的汉化补丁。
【原创】使MATLAB变成中文版
【原创】MATLAB 2006b 汉化文件
【原创】MATLAB R2007a 汉化补丁正式发布
[url=http://www.simwe.com/forum/viewthread.php?tid=803283]【原创】MATLAB R2007b 汉化补丁正式发布[/url]
【原创】MATLAB R2008a 汉化补丁正式发布

A4
  Q:
  为什么版面上很少有MATLAB的教程资料下载?
  A:
  本版定位为技术论坛。鼓励技术学习,原创分享,经验交流,问题解答。
  关于MATLAB的教程,MATLAB的公司MATHWORKS网页上有大批量的E文的PDF文档
  中文的,各个学校的数学建模区都有资料。
  请Google之以及版面搜索“资料”。


A5
  Q:
  
学习Matlab基础知识有哪些书籍?
  A:
    参考链接:http://forum.simwe.com/thread-892187-1-2.html
                     http://forum.simwe.com/thread-893197-1-1.html


A6
  Q:
  
如何知道安装了哪些toolbox?
  A:
  方法一:在命令提示符下键入ver命令


  方法二:help -> Contents

  方法三:
直接至matlab目录看,matlab安装文件夹下有个toolbox文件夹,里面是工具箱

  方法四:从启动的matlab中左下角有一个start 里面有toolbox一项 可以查看


A7
  Q:
  
为什么所贴的代码中,有些代码会变为笑脸?
  A:
  
这是因为bbs系统自动将 :) 转换为了。

  如果想防止这种自动转换,有2种方法:

  方法1、如果代码很多,建议将代码以“代码”的形式贴出。在编辑窗口中点击<>图标,然后将要贴出的代码复制入弹出的窗口中即可。

  方法2、在编辑窗口中点击“更多设定”,然后将“禁用Smilies”选项勾选即可。

  参考链接:http://forum.simwe.com/thread-889476-1-1.html






------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
B1
   Q:
   如何循环生成文件名?
   
   A:
   利用num2str等

   比如生成data1.txt,data2.txt
   可以
  1.    for i=1:2;
  2.        filename(i) = [ 'data'  num2str(i) '.txt'];
  3.    end
  4.    
复制代码
相关链接:
 紧急求助matlab文件名问题
    关于matlab下批量加载的问题
    讨论一下Matlab中批量写文件的问题(已实现一部分)
   求助!如何在matlab程序中输出到一些列文件里?

B2
  Q:
       如何在程序中动态自定义变量名?
比如循环变量 k=5
        我想定义 Num5 = magic(4);

  A:
        结合 eval , sprintf
        比如
  1.    
  2.         i = 5;
  3.         strCmd = sprintf('Num%d=magic(4);', i);  % 构建语句代码,存储在字符串变量中
  4.         eval(strCmd);  % 用eval函数执行存储在字符串中的代码
  5.         
复制代码
参考
      
如何在循环中自动生成变量名,并赋值
       求助:自动生成变量
       求教:符号变量的定义问题
       怎样定义多个变量名,在线等
       如何实现对变量的批量赋值?
       请问如何动态定义一个变量?!

B3      
      
Q:
   
  如何在指定的AXES上作图?
A:
      help axes;

      作图前,找到AXES的句柄axesHandle
      axes(axesHandle);
      再作图即可

B4      
      
Q:
   
  如何去掉矩阵的某些行/列?

      如果第一列的某个元素小于零,就去掉该元素对应行的所有元素
A:
      A(A(:,1)>=0,:)

      参考:
      【讨论】快速删除矩阵中含0的行

B5      
      
Q:
   
  如何使绘图的坐标轴的刻度标示显示为月份?

      比如使横坐标显示为
      1月,2月等等
A:
      用set(gca,'xticklabel',{'一月','二月'});
B6      
      
Q:
   
  如何建立文件夹?
A:
      
mkdir
      或者
      uigetdir

B7  Q:
      
如何将命令行中的已经敲过的命令保存到一个指定的.m文件里,以便以后查看和调用?
    A:
      
可以使用diary命令。
       DIARY Save text of MATLAB session.
       DIARY filename causes a copy of all subsequent command window input
        and most of the resulting command window output to be appended to the
        named file.  If no file is specified, the file 'diary' is used.
      参考链接:http://forum.simwe.com/thread-879560-1-1.html


B8  Q:
      
矩阵中的数据如何设置使其保留小数点后2位?
    A:
      
参考链接:http://forum.simwe.com/thread-895520-1-3.html


B9  Q:
      
如何一次(用不循环)形成等间隔递增矩阵?
    A:
      
可以采用cell2mat、arrayfun、bsxfun等命令。
      参考链接:http://forum.simwe.com/thread-900289-1-2.html


B9  Q:
      
如何不显示小数末尾的零
    A:
      
可以用正则表达式,regexprep命令。
       参考链接:http://forum.simwe.com/thread-901083-1-1.html





-
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

C1  Q:
       一个随机变量可以取1 2 3 4 5这5个值。每个值的概率分别为0.1 0.3 0.25 0.25 0.1。如何产生?
    A:
       可以参考        rocwoods兄写的这个程序   
      
            服从任意有限离散分布的随机数的程序

      2007.8.1日更新:
           可以参考:randsrc函数


C2 Q:
如何将参数传递到solve求解的方程组里面?
A:
如果将参数直接放入solve命令中,solve命令不识别。可以通过命令num2str转换。
例:          clc
          a=1:0.5:10;
          for i=1:length(a)
          str1=[num2str(a(i)),'*x^2+',num2str(a(i)),'^2*y^2+3*x*y+18=0'];
          str2=['(',num2str(a(i)),'-2)*x^4+',num2str(a(i)),'^3*y^4+7*y^2-12 = 0'];
          S{i} = solve(str1,str2);
          end

参考链接:http://forum.simwe.com/viewthread.php?tid=750041&highlight=solve

C3 Q:
如何将参数传递到fsolve求解的方程组里面?
A:

在fsolve命令中,可以用匿名函数来传递参数。


当fsolve命令需要传递参数时,可以采用[out] = fsolve(@(x) myfun(x,P1,P2....Pn) ,x0,options)的形式。其中,P1,P2....Pn为要传递的参数。



参考链接:http://forum.simwe.com/thread-902236-1-1.html
                 http://forum.simwe.com/thread-816392-1-1.html

                 http://www.chinavib.com/forum/thread-83119-1-4.html
                 http://www.chinavib.com/forum/thread-16308-1-1.html
                 http://forum.simwe.com/thread-902491-1-1.html




C4 Q:
如何进行一般区域上的2、3维积分?
A:

参考链接:一般区域二重、三重积分MATLAB计算方法
                 MATLAB R2009a 新增函数quad2d介绍

C5 Q:
如何对分段函数进行积分?
A:

参考链接:http://forum.simwe.com/thread-889225-1-1.html



C6 Q:
元素为0、1矩阵中,如何对矩阵分割并将每个子矩阵中不全为零的个数相加?
A:

可以采用mat2cell、cellfun、any等命令。

参考链接:http://forum.simwe.com/thread-900633-1-2.html



C7 Q:
为什么Matlab在计算(-8)^(1/3)时返回一个复数?
A:
    正如正数的平方根有两个(一个正根、一个负根)一样,负数(和复数)的开方有多个根。例如,如果以[幅值*exp(i*theta)]的形式来表示某一个数的三次方根,则这些三次方根的形式为,[幅值^3*exp(i*theta/3*k)],其中k=1:3。
    -8可以表示为8*exp(i*pi),这样其立方根为2*exp(i*pi/3),2*exp(2*i*pi/3),2*exp(3*i*pi/3)。最后一个立方根可以简化为-2。
    Matlab总是以实轴正向为基准以逆时针方向返回第一个根。根据这一原则,你可以计算所有或部分方根。例如,如果你想得到一个负的实立方根,可以简单地求这个数绝对值的立方根,然后取相反数。
    一次得到所有根的一个方法是计算一个多项式的根:
      P=[1 0 0 27];
      roots(P)

参考链接:http://forum.simwe.com/thread-172951-1-1.html





------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

D1 Q:
如何生成gif的动画文件?
A:
大致有三种方法,根据Matlab的参与程度排列可分为:1、用视频录像工具录制;2、用matlab输出多幅图片,然后用图像处理工具合成gif动画文件;3、用imwrite命令。

参考链接:http://forum.simwe.com/viewthread.php?tid=880377&;extra=page%3D1


D2 Q:
在surfc、meshc命令所画图中,如何调整等高线所在平面的位置?
A:
可以通过调整等高线句柄来实现。
参考链接:http://forum.simwe.com/thread-885324-1-1.html


D3 Q:
在点阵图中如何获取的曲线点的坐标?
A:
方法一:
          1、用windows画笔存储为单色位图
          2、图片跟.m文件放到同一文件夹。假设文件名是my_im.bmp。

               im=imread('my_im.bmp');  %读入图片

               index=find(im==1);  %找出图形中的“黑点”的坐标。该坐标是一维数据。

               s=size(im);  %读出图片大小
               [y,x]=ind2sub(s,index); %转化成二维坐标。x是点的横坐标,y是点的纵坐标。

方法二:
           a=imread('cameramn.tif');
           [m n]=find(im>22 & im<23);%大概取那些曲线的像素值
           plot(n,m,'r.', 'Markersize', 2);
           一定要注意m,n的位置哦
参考链接:http://forum.simwe.com/thread-886047-1-1.html

D4 Q:
怎么把figure的框架和白色背景去掉,让imagesc画出的图占满整个屏幕?
A:

  1. newgprime=zeros(100);
  2. fh = figure();          % Figure clockface named "scotts clock"
  3. imagesc(newgprime);
  4. axis off
  5. set(phaseface,'position',[1 1 1440 900]);
  6. set(phaseface,'MenuBar','none');
  7. set(gca,'position',[0 0 1 1])
复制代码




D5 Q:
如何做一个画中画式的局部放大图?
A:

可以有多种实现方法,比如通过交互界面来设置figure,axes等的属性。
参考链接:http://forum.simwe.com/thread-887007-1-1.html


D6 Q:
如何画不规则离散数据的三维曲面图形?
A:

可以用meshgrid、griddata、mesh、surf等命令。

参考链接:http://forum.simwe.com/thread-887117-1-2.html

D7 Q:
如何将图例(legend)分栏?
A:
Matlab默认情况图例(legend)为一列或一行。需要通过句柄调整legend命令或者重新绘制
图例(legend)。

参考链接:http://forum.simwe.com/thread-889490-1-1.html


D8 Q:
Matlab有哪些绘图命令?命令名及其相应的预览图是什么?
A:
2D plot

3D plot


参考链接:http://forum.simwe.com/thread-891967-1-1.html

D9 Q:
用Mesh、Surf等三维绘图命令时,如何使画出的图为黑白图像?
A:
可以采用以下命令:

[X,Y] = meshgrid(-3:.125:3);
Z = peaks(X,Y);
p = meshz(X,Y,Z);
set(p,'FaceColor','white','EdgeColor','black');

参考链接:http://forum.simwe.com/thread-899732-1-2.html






-
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

E1   
     Q:如何使窗体不能移动?
     A:参考SCIE写的这个MEX文件。

     mexDelSysMenu
E2  
    Q:

    GUI如何添加启动界面?
    A:
    方法很多很多。
    一,利用JAVA,参考Junziyang写的
    原创:GUI启动画面[改进版]
    二,利用WIN32 API,去掉MATLAB FIGURE的标题栏,参考snow_man_0写的
    启动画面的制作
    三,利用MFC DLL,创建MEX文件
E3   
     Q:
    何给GUI添加背景图片?
A:
     利用image函数
     参考:
    如何使gui界面更加美观?
    双axes或多axes的 GUI制作!
    请问:matlab的GUI设计界面怎么添加背景图片
    请教:matlab的GUI设计的界面怎么加上背景图片?
     

      1  如何在程序中动态自定义变量名
      2  VC调用MATLAB C++库时,包含"matlab.hpp",为何找不到'strstream.h'?
      3  MATLAB7.x混合编程为什么提示找不到matlab.hpp?

      6  如何去掉GUI编译后的DOS黑窗?
      7  如何在GUI中调用制作的帮助文件?
      8  MATLAB有中文版吗?
      9  为什么版面上很少有MATLAB的教程资料下载?
E4
    Q:

    如何去掉GUI编译后的DOS黑窗?
    A:
    这个问题应该比较成熟了。TMW上也给出了解决方案。
    【原创】去掉MATLAB编译产生的可执行图形界面程序运行时的DOS黑窗口的一种方法
   【推荐】去掉MATLAB编译产生的可执行图形界面程序运行时的DOS黑窗口的又一种方法
   【讨论】如何去掉讨厌的command窗口?
    更多的请参考,TAOHE的《深入浅出MATLAB7.X混合编程》
E5
   Q:

   如何在GUI中调用制作的帮助文件?
   A:
   一,利用 ! 命令
   二,利用强大的WIN32 API,参考SCIE写的这个MEX函数
    【原创】mex函数启动外部程序或打开外部文件 for cwit
E6
   Q:
   如何使GUI最大化?

   A:
   参考SCIE写的这个多功能的MEX函数
   mexwndop
E7
   Q:
   如何使GUI支持鼠标滚轮?

   A:
   参考nostalgica写的这个利用JAVA的函数
   scrolldemo
E8
   Q:
   如何使GUI居中?

   A:
   movegui(hFigure,'center');
   或者,用WIN32 API函数  



Matlab界面编程的例子(Vigenere密码系统)

[hide=2]

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

F1   
    Q:
    如何使用Matlab来进行频谱分析?
    A:
       可以参考MathWorks网站上编号1702的文献,http://www.mathworks.com/support/tech-notes/1700/1702.html
       参考链接:http://forum.simwe.com/thread-883389-1-1.html   

F2   
    Q:
    如何根据曲线来求穿越次数?
    A:
      可以在两条曲线上分别找到相邻的两个点,从而确定两条直线,求这两条直线的交点即可得两条曲线的交点。
      参考链接:http://forum.simwe.com/thread-883205-1-1.html

F3   
    Q:
    在用遗传算法做多目标优化时,怎么把其余的pareto front 图画出来?
    A:
      当你求出一组pareto解f时,默认是画出f1和f2的pareto解。需要画出其它的解,可以用
     figure ()
     scatter(f(:,fa)',f(:,fb)')
     grid on

     其中fa、fb分别为你需要的objective。
    参考链接:http://forum.simwe.com/thread-887476-1-1.html






------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

G1   
    Q:
    如何把整个模型文件中某一个子系统的名字替换成另一个名字?
    A:
       右键-open as text 打开simulink模型,之后就可以在M文件编辑器中修改各种参数了(包括子系统名字)
      参考链接:http://forum.simwe.com/thread-884250-1-1.html

G2   
    Q:
    什么是SimHydraulics模块?
    A:
       SimHydraulics是隶属於MATLAB和Simulink的液压动力与控制系统工程设计和仿真建模环境,基於simscape模块的物理建模环境。自MATLAB r2006b 正式加入simulink元件库。在simscape库元件基础上扩展容纳一整套复杂液压模块,分析过程透明直观,可自由建立High-level和Low-level库模块。
参考链接:http://forum.simwe.com/thread-885769-1-1.html


G3   
    Q:
    RTW将simulink模型生成C代码后,在VC中如何调整参数?
    A:
       RTW将simulink模型生成C代码,生成代码的过程要进行控制,在VC或其它编译器中将该代码与自己手写的部分代码合并编译链接即可。手写代码中直接调用RTW生成代码中变量名即可做PID控制!
      TRW生成的代码质量比较差,应该用EC会更好一些。
参考链接:http://forum.simwe.com/thread-887518-1-2.html

G4  
    Q:
    怎么获得一个模型中模块和变量的数量?
    A:
       使用profile分析。
参考链接:http://forum.simwe.com/thread-888937-1-1.html

G5  
    Q:
     为什么无法保存仿真结果 .mdl 文件?
    A:
       这可能是因为与模块相关的信息中有中文。当模型被保存时,不管模型保存时正在使用的编码方式是什么,.mdl文件中的文字都将以模型被创建时所使用的编码方式(原始编码方式)来保存。如果模型的原始编码方式与正在使用的编码方式不一样,可能会导致模型损坏。
   
      比如,你在当前的编辑中使用了原始编码不能表示的字符。在这种情况下,模型将被保存为扩展名为 .err 的文件,而文件的名字与原模型的名字相同,并且不对原来的模型文件做任何更改。Simulink还会显示一条错误信息,来指明第一个不能被原始编码所表示的字符的位置(行、列数)。如果想改正这一错误,并且不丢失在当前编辑中所做的修改,可以使用下列方法:首先,用文本编辑器打开.err 文件,并找到错误提示信息中所提到的字符。接着,对照 .err 文件,在当前模型文件中找到并删掉该字符。重复以上过程,直到保存模型时不再有错误信息。

      还有另外一种可能,就是你在当前编辑中使用的文本可以用原始编码方式表示,但是文本保存得不正确,所有输入的文本保存时都改变了。比如,假设你的当前编码方式为B,而原始编码方式为A。再假设你的编辑中有一个字符中,在B编码方式中为x而在A编码方式中为y。在这种情下,既使你在B编码方式下输入x,保存模型以后再以A编码方式打开,此时Simulink将会把x显示成y。为了提示这种损坏的可能性,只要你的原始编码方式与当前编码方式不同,并用你的原始编码方式可以以错误的方式保存模型中的字符,Simulink就会显示一条错误信息。

参考链接:http://forum.simwe.com/thread-888851-1-1.html





------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



H1   
    Q:
    VC调用MATLAB C++库时,包含"matlab.hpp",为何找不到'strstream.h'?
    A:
      引自taohe
  1.       
  2.       strstream.h是一个旧版标准的c++头文件。vc把它改成了strstrea.h,这两个头文件名相差一个m。在vc里用标准的strstream.h是找不到的。那么你在vc里边以为什么要找strstream.h呢?那是因为你的程序不知道你在用著名的vc,而其他多数c++编译器是用标准的头文件名。
  3.   
  4.      你可能注意到了,新版的C++(不光是vc++,这里指C++标准)规定所有的标准头文件不带后缀,也就是说头文件名不再有".h"。但几乎所有的C++编译器为了照顾其客户手中的一些旧代码,一般都提供有".h"的头文件。微软的vc在strstream这个头文件上比较特殊,其旧版的头文件名叫做strstrea.h,而新版的则和标准一样,叫做strstream。所以你可能已经在你的vc的安装目录下找到一个文件叫做strstream了,但是可惜的是,你不能把这个文件改个名,改成strstream.h来用,因为新版的头文件中的定义都用到了叫做"std"的namespace。要像使用新版的头文件,需要用不同于旧版的方法。
  5.   
  6.      以上有点扯远了。不过也算是一点背景知识吧。现在再来看你的问题,我猜99%你的mcc没有问题,只是你的vc还没有设置好。而如何设置vc这里已经讨论过很多了。其中一点就是要在编译之前定义MSVC之类的。意思就是说,设置好vc以后,你不用修改原文件,同样的文件,在vc不会再有问题,他也不会再说找不到strstream.h了。Good luck!
  7.       
复制代码
个人意见:
       请注意VC的工程选择。
       参考MATLAB目录下\extern\examples的相关目录的readme
       据我所知,在MFC AppWizard及Win32 Console Application中是可以使用MATLAB C++数学库的
      参考
       请教~用mcc命令把M文件生成C++文件后却编译不成功~
     【求助】在VC中包含"Matlab.hpp"编译时在所有路径都找不到"strstream.h
      【求助】VC扩展编程
      【讨论】strstream.h是什么头文件哪
      【讨论】关于Matlab与VC接口的新疑问
H2      
      Q:
   
  MATLAB7.x混合编程为什么提示找不到matlab.hpp?
A:
      MATLAB从7.0开始,编译器发生了重大的变革。不再提供C/C++数学图形库,不再有类于matlab.hpp的头文件了
      参考
      MatLab 7 如何在vc中调用?好像少了matlab.hpp
     【原创】VC6.0调用Matlab6.5数学库函数和图形库函数编程实例

H3
   Q:
   
  
如何发布MATLAB7.X编译后的程序?
      A:
  1. ZZ TAOHE的<深入浅出MATLAB7.X混合编程>

  2. 无论编译后产生的是可执行文件,还是动态连接库,要使它们能够发布到别的没有安装MATLAB的计算机上使用,必须在目标计算机上安装MCR,不能只是简单地把编译后产生的文件复制到目标计算机上。

  3. 可以利用MATLAB命令buildmcr来创建可以发布给最终用户的MCR安装文件。buildmcr的功能是创建一个包含MCR需要的所有文件的ZIP压缩文件。buildmcr有如下两种调用方式:



  4. zipfile = buildmcr

  5. zipfile = buildmcr(dirname)



  6. 其中返回值zipfile是产生MCRInstaller.zip的完整路径名。在没有输入参数的情况下,buildmcr会把产生的
  7. MCRInstaller.zip保存到地址$MATLAB/toolbox/compiler/deploy/<arch>
  8. /MCRInstaller.zip。

  9. 其中$MATLAB代表MATLAB的安装目录,<arch>代表不同的计算机架构。比如在Windows上,默认的
  10. MCRInstaller.zip的路径为$MATLAB\toolbox\compiler\deploy\win32\
  11. MCRInstaller.zip。

  12. 相应地,在Linux上,默认的MCRInstaller.zip的路径为$MATLAB/toolbox/compiler/ deploy/glnx86/MCRInstaller.zip。

  13. 也可以使用输入参数dirname来指定MCRInstaller.zip的保存目录。buildmcr('.')将把产生的MCRInstaller.zip保存到当前工作目录。

  14. 一般来说,需要发布的文件有3个:

  15. (1)编译得到的可执行文件或者库函数。



  16. (2)CTF文件。

  17. (3)MCRInstaller.zip。

  18. 在最终用户的计算机上,首先需要把MCRInstaller.zip解压,并把MCR中可执行文件所在目录加到系统路径上,然后就可以使用编译后的程序了。

  19. 注意:MCR不支持在startup.m中使用addpath命令增加搜索路径。

  20. startup.m是一个可以让用户设置一些关于MATLAB运行的个性化设置。如果你在运行MATLAB编译器的计算机上使用startup.m来给
  21. MATLAB增加一些特别的搜索路径,那么发布的程序运行时会报错。必须让addpath命令只在非发布情况下才有效。利用isdeployed命令,在
  22. startup.m判断是否运行相关的命令:



  23. if ~isdeployed

  24.              addpath(…)

  25.              %其他一些命令

  26. endif



  27. 另外,编译后发布的程序在运行时需要先把CTF解压。所以在运行这些程序时需要确保对CTF文件所在目录有写权利。否则,发布的程序在执行时会报错。如果编译后的程序以光盘的方式发布,那么程序必须先复制到硬盘的某个目录,然后才运行。
复制代码


H4  Q:
       VC和MATLAB混编为什么提示无法打开
libmatpm.lib
      A:
       阅读如下关于MATLAB6.X混编的帖子,及相关精华区SCIE的帖子
      

【转帖】总结:m文件转化为c/c++语言文件,VC编译

       你的设置对么?你的MATLAB版本对吗?



H5 Q:
      
混合编程时,Matlab的哪些命令不能被调用?
      A:
      
混合编程不支持符号计算命令,syms、tf、神经网络工具箱所有函数
       参考链接:http://forum.simwe.com/thread-884747-1-1.html


H6 Q:
      
VC调用MATLAB生成的图片时,为何图片显示时却一闪而过
      A:
       这是因为初始化和终止代码放错了地方。
      
参考链接:http://forum.simwe.com/thread-900769-1-1.html

H7 Q:
      
在编写mexw32文件时,用什么函数来实现从matlab传递来一个字符串参数?
      A:
       可以用mxGetString或meArrayToString函数。
       参考链接:http://forum.simwe.com/thread-902638-1-2.html



   

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

I1  Q:
为什么会有如下错误信息:??? Attempt to execute SCRIPT XXXX as a function..hpp?
A:
这种情况,一般是你的MATLAB搜索路径下有一个与系统函数同名的自编函数文件。
解决方法:用which命令找到自编函数文件的位置,将其改名或删除。
例:
比如出现如下错误信息:??? Attempt to execute SCRIPT axis as a function.
在在command windows下输入which axis,把自己写的那个axis函数改名或删掉。
参考链接:http://forum.simwe.com/thread-876225-1-2.html


I2  Q:
在通过Matlab调用Fortran程序时,为什么在链接时会有如下错误信息mexfile_CaclT90.obj : error LNK2001: unresolved external symbol _MEXERRMSGTXT@8
A:
这种情况,是在因为在Fortran的project设置中,少加了一个libmex.lib库。
参考链接:http://forum.simwe.com/thread-880643-1-1.html


I3  Q:
在用GAOT工具箱来求解ga问题时,为什么会有如下错误信息:
??? Input argument "sol" is undefined.
A:
这种情况,是因为想直接执行目标函数。此工具箱的目标函数需要其它命令调用。

参考链接:http://forum.simwe.com/thread-880207-1-1.htmlhttp://forum.simwe.com/thread-840427-1-2.htmlhttp://forum.simwe.com/thread-135453-1-2.html


I4  Q:
在用rtw的方式将simulink模型与vc混合编程的时候,出
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-9-28 05:05 , Processed in 0.046553 second(s), 12 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表