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

【备份】FAQ Beta(2011.02)

  [复制链接]
发表于 2011-5-15 15:39:39 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
问题索引
A. 新手提问入门
      
      A1   为什么我的帖子没有人回复?
      A2   我该如何提问?
      A3  MATLAB有中文版吗?
      A4   为什么版面上很少有MATLAB的教程资料下载?
      A5   学习Matlab基础知识有哪些书籍?
      A6   如何知道安装了哪些toolbox?
      A7   如何添加toolbox?
      A8  为什么所贴的代码中,有些代码会变为笑脸?
      A9  Matlab版为什么没有分类?


B. 基础编程

      B1   Matlab编程时应遵循的程序设计规范和命名规则是什么?
      B2   如何循环生成文件名?
      B3   如何在程序中动态自定义变量名?
      B4   在函数调用时,如何使不同的调用过程,输出不同的变量名?
      B5   如何去掉矩阵的某些行/列?
      B6   如何使绘图的坐标轴的刻度标示显示为月份?
      B7   如何建立新的文件夹?
      B8   如何将命令行中的已经敲过的命令保存到一个指定的.m文件里,以便以后查看和调用?
      B9   矩阵中的数据如何设置使其保留小数点后2位?
      B10   如何不显示小数末尾的零?
      B11   如何生成一个含有单引号的字符串?
      B12   如何一次(用不循环)形成等间隔递增矩阵?
      B13   如何将一个矩阵按列扩充为一个分块对角矩阵?
      B14   为什么我的m文件在执行时无法用Ctrl-C中断?
      B15   将带有循环的程序矢量化,以提高程序的运行效率示例。







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   如何求一个n阶矩阵A的伴随矩阵?
     C8   如何统计数组中相同元素的个数?
     C9   如何统计一组数据中各数值出现的次数?
     C10   为什么Matlab在计算(-8)^(1/3)时返回一个复数?
     C11   为什么factorial命令在符号计算中出错?
     C12   MATLAB 下如何求解平面和直线方程?
     C13   如何利用离散点进行插值,生成光滑闭合曲线?
     C14   如何用最小二乘法进行多元函数拟合?
     C15   MATLAB中如何进行椭圆拟合?
     C16   MATLAB中如何进行整数线性规划?




D. 数据处理及可视化

      D1   如何生成gif的动画文件?
      D2   在surfc、meshc命令所画图中,如何调整等高线所在平面的位置?
      D3   在点阵图中如何获取的曲线点的坐标?
      D4   如何在指定的AXES上作图?
      D5   怎么把figure的框架和白色背景去掉,让imagesc画出的图占满整个屏幕?
      D6   如何把plot画出的图的边框改成白色的?
      D7   如何做一个画中画式的局部放大图?
      D8   如何画不规则离散数据的三维曲面图形?
      D9   如何使某一曲线绕坐标轴旋转生成旋转曲面?
      D10   如何将图例(legend)分栏?
      D11   Matlab有哪些绘图命令?命令名及其相应的预览图是什么?
      D12   用Mesh、Surf等三维绘图命令时,如何使画出的图为黑白图像?
      D13   在等高线图(contour)中,如何去掉指定范围以外部分的等高线并在指定范围画阴影?
      D14   在等高线图(contour)中,如何获得点的坐标?
      D15  在绘图时,如何实现XTickLabel的旋转?
      D16  画三维曲面时候如何将坐标轴的说明(xlabel/ylabel)变得与坐标轴平行?
      D17  画二维图时,如何绘制多个纵坐标/横坐标?
      D18  如何清除坐标轴的信息?
      D19  如何画出一个和坐标轴垂直的平面?
      D20  如何绘制分段函数的图像?
      D21  如何绘制添色的玫瑰图?
      D22  极坐标图(polar)中,如何将极轴上的数值为负?
      D23  极坐标图(polar)中,如何修改极坐标坐标轴设置?
      D24  如何画叠加的三维柱状图?
      D25  在MATLAB下,如何实现不同字体混排?




Mathworks FAQ(2009),Graphics部份

E. GUI

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


F. 专业计算

      F1   如何使用Matlab来进行频谱分析?
      F2   如何根据曲线来求穿越次数?
      F3   SGALAB1003beta5.0.0.5(Micro-GA/Mendel's Law Operator with ParetoFront )
      F4   在用遗传算法做多目标优化时,怎么把其余的pareto front 图画出来?
      F5   怎样找一组离散数据/离散点的极值(极大值和极小值)?
      F6   如何实现截尾正态分布的数据?
      F7   FIR滤波器的一个小例子




G. Simulink仿真

      G1   如何把整个模型文件中某一个子系统的名字替换成另一个名字?
      G2   什么是SimHydraulics模块?
      G3   RTW将simulink模型生成C代码后,在VC中如何调整参数?
      G4   怎么获得一个模型中模块和变量的数量?
      G5   为什么无法保存仿真结果 .mdl 文件?
      G6   Simulink能解DAE(代数微分方程系统)吗?
      G7   在Simulink仿真过程中如何修改积分步长?





H. 混合编程
      
      H1  混合编程时,Matlab的哪些命令不能被调用?
      H2  明明安装了Visual Studio 2005,为什么mex就是找不到?
      H3  VC调用MATLAB C++库时,包含"matlab.hpp",为何找不到'strstream.h'?
      H4   MATLAB7.x + VC混合编程为什么提示找不到matlab.hpp?
      H5  在VC6.0 + Matlab R2009b联合编程时,编译成exe文件后,执行exe文件的时候为什么遇到如下错误:MATLAB:I18n:MissingICUData - ICU data not found. The program '[1672] F:\***.exe: Native' has exited with code 2 (0x2).?
      H6  MATLAB和VC混合编程为什么提示无法打开libmatpm.lib?
      H7  在win7中的MATLAB2009b中,找不到libmx.lib libeng.lib?
      H8  VC调用MATLAB生成的图片时,为何图片显示时却一闪而过?
      H9  MFC调用matalab的dll进行画图时,为什么执行的时候,有一个窗口闪过却画不出来图形?
      H10  在通过Matlab调用Fortran程序时,为什么在链接时会有如下错误信息 :mexfile_CaclT90.obj : error LNK2001: unresolved external symbol _MEXERRMSGTXT@8
      H11  在编写mexw32文件时,用什么函数来实现从matlab传递来一个字符串参数?
      H12  VC++如何调用matlab中的绘图命令?
      H13  如何发布MATLAB7.X编译后的程序?
      H14 Matlab2010b+VC6.0混编
      H15 Matlab如何输出dxf格式的图形?




I. 常见错误及解决

      I1  为什么会有如下错误信息:??? Attempt to execute SCRIPT XXXX as a function..hpp?
      I2  在用GAOT工具箱来求解ga问题时,为什么会有如下错误信息:??? Input argument "sol" is undefined.
      I3  在ga(遗传算法)优化计算中,为什么计算结果显示“Constraint function must return real value.”的错误信息?
      I4  在用rtw的方式将simulink模型与vc混合编程的时候,出现了下个错误:“simstruc.h(282) : fatal error C1189: #error :  Unrecognized use.” 如何解决?
      I5  在Matlab中输入mupad命令,为什么会出现 can not start engine 的错误信息?
      I6  GUI设计中,为什么BackgroundColor不能设置Pushbutton后面的颜色?







J. 文件输入、输出

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



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


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

A3
Q: MATLAB有中文版吗?
A:
   没有。不过,你可以试试junziyang的汉化补丁。
【原创】使MATLAB变成中文版
【原创】MATLAB 2006b 汉化文件
【原创】MATLAB R2007a 汉化补丁正式发布
【原创】MATLAB R2007b 汉化补丁正式发布
【原创】MATLAB R2008a 汉化补丁正式发布

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


A5
Q: 学习Matlab基础知识有哪些书籍?
A:
s函数的方面,可以看看《Matlab应用技术》-在电气工程与自动化专业中的应用
王忠礼编,清华大学出版社。p62-69

   参考链接:MATLAB2008全程指南                  
                     MATLAB语言常用算法程序集
                     S函数如何编写?
A6
Q: 如何知道安装了哪些toolbox?
A:
   方法一:在命令提示符下键入ver命令
   方法二:help -> Contents
   方法三:直接至matlab目录看,matlab安装文件夹下有个toolbox文件夹,里面是工具箱
   方法四:从启动的matlab中左下角有一个start 里面有toolbox一项 可以查看


A7
Q: 如何添加toolbox?
A:
   方法1:如果是Matlab安装光盘上的工具箱,重新执行安装程序,选中即可;
   方法2:如果是单独下载的工具箱,一般情况下仅需要把新的工具箱解压到某个目录。
      2.1 在matlab的file下面的set path把它加上。
      2.2 把路径加进去后在file→Preferences→General的Toolbox Path Caching里点击update Toolbox Path Cache更新一下。
      2.3 用which newtoolbox_command.m来检验是否可以访问。如果能够显示新设置的路径,则表明该工具箱可以使用了。
      或者将工具箱复制到toolbox目录然后在set path里面添加这个目录就可以用了。
   参考链接:matlab工具箱如何安装?
                    如何添加工具箱




A8
Q: 为什么所贴的代码中,有些代码会变为笑脸?
A:这是因为bbs系统自动将 :) 转换为了。
   如果想防止这种自动转换,有2种方法:
   方法1、如果代码很多,建议将代码以“代码”的形式贴出。在编辑窗口中点击<>图标,然后将要贴出的代码复制入弹出的窗口中即可。
   方法2、在编辑窗口中点击“更多设定”,然后将“禁用Smilies”选项勾选即可。

   参考链接:为什么所贴的代码中,有些代码会变为笑脸?

A9
Q:Matlab版为什么没有分类?
A: 这是因为大家讨论以后,认为以本版的现状,现在不太适合分类。并且每个人所需要的信息不同,而Matlab的知识又很纷杂,分类不一定是一个好的解决方法。
    为了使大家方便获得想要的信息,本版现在一直要求大家在发贴写标题时要注意详细说明问题。
    所以大家在发贴时,一定要注意在标题中尽量言简意赅地全面描述问题,并且认真添加“标签”,以方便大家以后搜索,这也许比分类更有效。

   参考链接:感觉matlab版这段时间比较乱,建议开设子版
                    Matlab版面进行分类的建议
                    一个小建议





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


B1   
Q: Matlab编程时应遵循的程序设计规范和命名规则是什么?
A:
相关链接:编程中命名规则/命名法有何技巧?
                 matlab编程风格指南(中文版)
                 matlab程序设计规范(英文版)
                 matlab提供的函数那么多,如何避免函数重名?

B2   
Q: 如何循环生成文件名?
A:
    利用num2str等
    比如生成data1.txt,data2.txt
    可以
  1.    
  2.    for i=1:2;
  3.        filename(i) = ['data'  num2str(i) '.txt'];
  4.    end
复制代码
相关链接:【讨论】如何把文件名当变量处理?
                如何在matlab程序中输出到一些列文件里?
                讨论一下Matlab中批量写文件的问题(已实现一部分)
                matlab文件名问题
                关于matlab下批量加载的问题
                如何在M文件内部生成文件名?
                save命令可以实现循环存储吗?
                关于保存文件名变量的问题!(save)
                请问一下如何在M文件内部生成的文件名





B3  
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.         
复制代码
参考:
如何在循环中自动生成变量名,并赋值
求助:自动生成变量
求教:符号变量的定义问题
怎样定义多个变量名,在线等
如何实现对变量的批量赋值?



B4      
Q: 在函数调用时,如何使不同的调用过程,输出不同的变量名?
A:
可以分别使用eval、num2str、sprintf 三个命令,用三种不同的方法来实现这一目的。
       参考:如何设置一个名字可以变化的变量名

B5      
Q:如何去掉矩阵的某些行/列?比如,如果第一列的某个元素小于零,就去掉该元素对应行的所有元素
A:
A(A(:,1)>=0,:)
参考:
【讨论】快速删除矩阵中含0的行

B6      
Q:如何使绘图的坐标轴的刻度标示显示为月份?比如使横坐标显示为1月、2月等等      
A:
用set(gca,'xticklabel',{'一月','二月'});

  1. date1=datenum(1912,1,1):datenum(1912,4,30);
  2. [m,n]=size(date1);
  3. data1=sin(date1./4);
  4. plot(date1,data1);
  5. datetick('x','yyyy/mm/dd')
复制代码
参考:
请问怎样在MATLAB中绘制以年月日(比如:1912/1/1-1912/4/30间隔为一天)的横坐标)



B7      
Q:如何建立文件夹?      
A:
mkdir  或者  uigetdir

B8      
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

B9  
Q:矩阵中的数据如何设置使其保留小数点后2位?
A:
参考链接:矩阵中的数据如何设置使其保留小数点后2位

B10  
Q:如何不显示小数末尾的零?
A:
可以用正则表达式,regexprep命令。
参考链接:如何不显示小数点后面的零?

B11  
Q:如何生成一个含有单引号的字符串?
A:
因为Matlab的单引号是字符串的标志,所以如果字符串中包含单引号,则需要输入两个单引号,才能输出一个单引号。
如:
>> msg = 'You''re right!'
msg =
You're right!
参考链接:单引号


B12  
Q:如何一次(用不循环)形成等间隔递增矩阵?
A:
可以采用cell2mat、arrayfun、bsxfun等命令。
参考链接:matlab生成等间隔递增矩阵的问题

B13  
Q:如何将一个矩阵按列扩充为一个分块对角矩阵?
A:
参考链接:矩阵扩充赋值问题



B14  
Q:为什么我的m文件在执行时无法用Ctrl-C中断?
A:
这一问题只是在Windows操作系统中才会出现,因为在Windows操作系统中MATLAB必须对Ctrl-C事件进行轮询。如果MATLAB深陷入矩阵运算中,则MATLAB怎么也不会反应。如果MATLAB正处在循环结构中,你可以通过在循环中加入'drawnow'或'pause(0)'命令来强迫MATLAB增加轮询次数。这一方法也会更新你的图并且会使GUI更容易响应。
参考链接:http://forum.simwe.com/thread-172951-1-1.html Q6.10。


B15  
Q:将带有循环的程序矢量化,以提高程序的运行效率示例。
A:
参考链接:http://forum.simwe.com/thread-906752-1-1.html




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

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


C2
Q:如何将参数传递到solve求解的方程组里面?
A:
如果将参数直接放入solve命令中,solve命令不识别。可以通过命令num2str转换。
例:

  1.           clc
  2.           a=1:0.5:10;
  3.           for i=1:length(a)
  4.           str1=[num2str(a(i)),'*x^2+',num2str(a(i)),'^2*y^2+3*x*y+18=0'];
  5.           str2=['(',num2str(a(i)),'-2)*x^4+',num2str(a(i)),'^3*y^4+7*y^2-12 = 0'];
  6.           S{i} = solve(str1,str2);
  7.           end
复制代码
参考链接:http://forum.simwe.com/thread-750041-1-1.html

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等命令。
参考链接:矩阵分割问题


C7
Q:如何求一个n阶矩阵A的伴随矩阵?
A:
如果矩阵A为可逆矩阵,可以通过A的伴随矩阵=det(A)*inv(A)关系式来求得。如果A为不可逆矩阵,需要编程求得。
参考链接:对不可逆矩阵怎样求伴随阵/伴随矩阵?

C8
Q:如何统计数组中相同元素的个数?
A:
可以采用unique、hist命令。
参考链接:如何统计数组中相同的数字及其个数


C9
Q:如何统计一组数据中各数值出现的次数?
A:
可以采用tabulate命令或xiezhh编写的HistRate程序。
参考链接:如何统计一组数据中各数值出现的次数?


C10
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)
参考链接:MATLAB FAQ (Apr 15,2003) Q5.6

C11
Q:为什么factorial命令在符号计算中出错?
A:
factorial命令不支持符号运算,可用gamma命令或prod命令代替。
参考链接:用matlab求解级数问题
                如何求解此种符号方程

C12
Q:MATLAB 下如何求解平面和直线方程?
A:

参考链接:MATLAB 下如何求解平面和直线方程

C13
Q:如何利用离散点进行插值,生成光滑闭合曲线?
A:
参考链接:如何利用离散点进行插值,生成闭合曲线?
                 一组(闭合的)离散点如何拟合成光滑曲线!


C14
Q:如何用最小二乘法进行多元函数拟合?
A:

参考链接:三维数组怎样拟合成三维曲线
偏最小二乘法的Matlab源码

C15
Q:MATLAB中如何进行椭圆拟合?
A:
可以采用
Andrew Fitzgibbon椭圆拟合程序

Fit ellipses to 2D points using linear or nonlinear least squares

Ellipse Fit (Direct method)

参考链接:Matlab的常见问题——58).如何求解对离散点的最优椭圆拟合?
                 请教高手曲线拟合问题
                 拟合椭圆参数方程
                 一组(闭合的)离散点如何拟合成光滑曲线

C16
Q:MATLAB中如何进行整数线性规划?
A:
参考链接:http://forum.simwe.com/thread-947140-1-1.html





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



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

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


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

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

  1.                im=imread('my_im.bmp');  %读入图片
  2.                index=find(im==1);  %找出图形中的“黑点”的坐标。该坐标是一维数据。
  3.                s=size(im);  %读出图片大小
  4.                [y,x]=ind2sub(s,index); %转化成二维坐标。x是点的横坐标,y是点的纵坐标。
复制代码
方法二:

  1.            a=imread('cameramn.tif');
  2.            [m n]=find(im>22 & im<23);%大概取那些曲线的像素值
  3.            plot(n,m,'r.', 'Markersize', 2);
复制代码
一定要注意m,n的位置哦
参考链接:求一从图片中读取曲线数据的MATLAB程序!
                 【讨论】由一个屏幕选点程序想到的问题请教大家

D4      
Q: 如何在指定的AXES上作图?
A:
       help axes;
      作图前,找到AXES的句柄axesHandle
      axes(axesHandle);
      再作图即可



D5
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])
复制代码
D6
Q:如何把plot画出的图的边框改成白色的?
A:
方法1、用set(gcf,'color','w');将当前figure底色设置为白色。
方法2、Figure窗口菜单Edit-Copy Options-Figure background color-选中Force white background。
方法3、图形在word中是以100%的比例显示的时候才是最清晰的,将figure窗口调整至合适的大小,再拷贝粘贴。
参考链接:如何把plot画出的图的边框改成白色的?
                 matlab画出的图形,如何清晰得粘贴在word文档中?
                 matlab画点图的时候底色是不是默认为灰色?
                 图形输出的问题



D7
Q:如何做一个画中画式的局部放大图?
A:
可以有多种实现方法,比如通过交互界面来设置figure,axes等的属性。
参考链接:http://forum.simwe.com/thread-887007-1-1.html


D8  
Q:如何画不规则离散数据的三维曲面图形
A:
可以用meshgrid、griddata、mesh、surf等命令。

参考链接:怎样画这些数据的三维曲面图?
                 求问:已知节点坐标画三维曲面
                 如何画非矩形域的曲面
                 如何画定义在多边形区域上的曲面?

D9
Q:如何使某一曲线绕坐标轴旋转生成旋转曲面?
A:
参考链接:【分享】生成旋转面的matlab程序
                matlab如何对二维图像绕Y轴旋转


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

参考链接:如何对图形的图例进行分栏
                legend分行显示


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

3D plot


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

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

  1. [X,Y] = meshgrid(-3:.125:3);
  2. Z = peaks(X,Y);
  3. p = meshz(X,Y,Z);
  4. set(p,'FaceColor','white','EdgeColor','black');
复制代码
参考链接:http://forum.simwe.com/thread-899732-1-2.html

D13
Q:在等高线图(contour)中,如何去掉指定范围以外部分的等高线并在指定范围画阴影?
A:
参考链接:在等高线图(contour)中,如何去掉指定范围以外部分的等高线并在指定范围画阴影?
                 请教:关于二维非规则区域等值云图的matlab实现方法
                 如何使用已有数据进行contour绘图l
                 如何用散点画等高线?
                 如何在图形填充中作剖面线?
                 【挑战】高手帮忙看看这个图像是如何做出来的?


http://forum.simwe.com/thread-948702-1-1.html


D14
Q:在等高线图(contour)中,如何获得点的坐标?
A:
参考链接:http://forum.simwe.com/thread-892833-1-1.html

D15
Q:在绘图时,如何实现XTickLabel的旋转?
A:
在绘图时,如果XTickLabel的字符串过长,会导致多个ticklabel重叠。一般情况下,label是可以通过属性设置其旋转的,但是,ticklabel在axis属性对话框中通过设置style
只能设置FontSize和FontWeight等属性,并不能旋转。
解决方法是,通过set(h,'XTickLabel',[])命令将原来的ticklabel去掉,然后用text命令添加新的ticklabel并通过设置'Rotation'属性将其旋转。
参考链接:http://forum.simwe.com/thread-905525-1-1.html
                 http://www.mathworks.com/support ... ml?solution=1-15TK6
                 http://hi.baidu.com/xuelicheng/b ... b565173a2935b7.html

D16
Q:画三维曲面时候如何将坐标轴的说明(xlabel/ylabel)变得与坐标轴平行?
A:
    将图像转到合适方向后,再用Rotation属性更改。
如:
plot(1,2,3);h=ylabel('yaxis');set(h,'rotation',330);

参考链接:画三维曲面时候如何将坐标轴的说明变得与坐标轴平行?
                matlab画的三维图的怎么使x轴的label标注平行于x轴


D17
Q:画二维图时,如何绘制多个纵坐标/横坐标?
A:
    其实这种多轴的很多时候,都可以自己给绘出来,耍个小"诡计"即可。

参考链接:matlab里画三个纵坐标
                 请教:MATLAB中如何绘制三纵坐标图?
                 【分享】三轴绘图程序
                 求助关于多坐标轴曲线的绘制
                 请教高手如何绘制多y 轴的曲线图啊
                 多纵坐标多参数画图
                 多纵坐标多参数如何画,请教
                 两个横坐标一个纵坐标

D18
Q:如何清除坐标轴的信息?
A:
参考链接:如何清除坐标轴的信息?
              



D19
Q:如何画出一个和坐标轴垂直的平面?
A:
参考链接:如何画出一个和坐标轴垂直的平面


D20
Q:如何绘制分段函数的图像?
A:
参考链接:【总结】分段函数画图/绘图/绘制的简单方法

D21
Q:如何绘制添色的玫瑰图?
A:
参考链接:【讨论】填色的玫瑰图

D22
Q:极坐标图(polar)中,如何将极轴上的数值为负?
A:
可以在极轴上的数据统一加一个常数,但是极轴上的text标注为负值。可以通过修改polar命令来实现在极轴上标注为负值。
参考链接:极坐标图(polar)中如何将极轴上的数值为负?

D23
Q:极坐标图(polar)中,如何修改极坐标坐标轴设置?
A:
比较复杂的设置,可以采用FileExchange中的一些程序来完成。简单的设置可以通过图形叠加来完成。
参考链接:【讨论】极坐标图形(polar)中,如何修改坐标标注?
                  Advanced Polar Plots
                  Advanced Polar Plots v2
                  Polar 2
                  极坐标坐标轴设置的问题
                  怎么在极坐标中界定坐标的最大值?

D24
Q:如何画叠加的三维柱状图?
A:

参考链接:在matlab中如何画这样的三维柱状图?
                 matlab三维柱状图bar3c能不显示吗?
                 Simple function to draw a voxel (cube, cuboid) in a specific position of specific dimensions in a 3-D plot

D25
Q:在MATLAB下,如何实现不同字体混排?
A:
可以采用tex来完成。
参考链接:关于图上文字正体与斜体字同时应用






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


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设计的界面怎么加上背景图片?

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:SGALAB1003beta5.0.0.5(Micro-GA/Mendel's Law Operator with ParetoFront )
A:
   Genetic Algorithms Toolbox for Multi-Objective Problems
   参考链接:【原创】SGALAB1003beta5.0.0.5(Micro-GA/Mendel's Law Operator with ParetoFront )

F4   
Q:在用遗传算法做多目标优化时,怎么把其余的pareto front 图画出来?
A:
   当你求出一组pareto解f时,默认是画出f1和f2的pareto解。需要画出其它的解,可以用
  1.    
  2.    figure ()
  3.    scatter(f(:,fa)',f(:,fb)')
  4.    grid on
复制代码
其中fa、fb分别为你需要的objective。
    参考链接:http://forum.simwe.com/thread-887476-1-1.html

F5   
Q:怎样找一组离散数据/离散点的极值(极大值和极小值)?
A:
方法一:如果安装了图像处理工具箱(Signal Processing Toolbox),可以用该工具箱中的findpeaks命令来求解局部极大值。
方法二:可以用下列代码:
         极值:
         data是你的数据,
         find(diff(sign(diff(data)))==-2)+1
         找到极大值的位置
  
         find(diff(sign(diff(data)))==2)+1
         找到极小值的位置

         data(find(diff(sign(diff(data)))==-2)+1)和
         data(find(diff(sign(diff(data)))==2)+1)
         返回的是极大值和极小值

   参考链接:MATLAB提取极大值点进行曲线拟合
                    怎样找一组离散数据/离散点的极值(极大值和极小值)?

F6   
Q:如何实现截尾正态分布的数据?
A:
   参考链接:如何实现截尾正态分布的数据?

F7   
Q:FIR滤波器的一个小例子
A:
   参考链接:FIR滤波器的一个小例子




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


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

G6  
Q:Simulink能解DAE(代数微分方程系统)吗?
A:
   参考链接:http://forum.simwe.com/thread-907069-1-1.html

G7  
Q:在Simulink仿真过程中如何修改积分步长?
A:
可以用Matlab Fcn修改最大积分步长。
   参考链接:在Simulink仿真过程中如何修改积分步长?






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



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

H2   
Q:明明安装了Visual Studio 2005,为什么mex就是找不到?   
A:
      这是因为mex检查你是否安装了VS,进一步查看版本是否正确,是通过查看C:\Program Files\Microsoft Visual Studio 8\VC\bin\cl.exe的版本是否正确。具体方法是调用cl.exe,它会输出一堆字符,然后在其中查看是否有“Version 14.0”,如果有就判断版本正确,否则就会出现上面的一堆Error。但是非英文版的VS,调用cl.exe输出的字符中不一定有“Version 14.0”,这就会导致mex误判。
     参考链接:http://forum.simwe.com/thread-881899-1-1.html

H3   
Q:VC调用MATLAB C++库时,包含"matlab.hpp",为何找不到'strstream.h'?   
A:
      引自taohe
      
      strstream.h是一个旧版标准的c++头文件。vc把它改成了strstrea.h,这两个头文件名相差一个m。在vc里用标准的strstream.h是找不到的。那么你在vc里边以为什么要找strstream.h呢?那是因为你的程序不知道你在用著名的vc,而其他多数c++编译器是用标准的头文件名。
      你可能注意到了,新版的C++(不光是vc++,这里指C++标准)规定所有的标准头文件不带后缀,也就是说头文件名不再有".h"。但几乎所有的C++编译器为了照顾其客户手中的一些旧代码,一般都提供有".h"的头文件。微软的vc在strstream这个头文件上比较特殊,其旧版的头文件名叫做strstrea.h,而新版的则和标准一样,叫做strstream。所以你可能已经在你的vc的安装目录下找到一个文件叫做strstream了,但是可惜的是,你不能把这个文件改个名,改成strstream.h来用,因为新版的头文件中的定义都用到了叫做"std"的namespace。要像使用新版的头文件,需要用不同于旧版的方法。
       以上有点扯远了。不过也算是一点背景知识吧。现在再来看你的问题,我猜99%你的mcc没有问题,只是你的vc还没有设置好。而如何设置vc这里已经讨论过很多了。其中一点就是要在编译之前定义MSVC之类的。意思就是说,设置好vc以后,你不用修改原文件,同样的文件,在vc不会再有问题,他也不会再说找不到strstream.h了。Good luck!
      
个人意见:
       请注意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接口的新疑问

H4   
Q:MATLAB7.x混合编程为什么提示找不到matlab.hpp?   
A:
      MATLAB从7.0开始,编译器发生了重大的变革。不再提供C/C++数学图形库,不再有类于matlab.hpp的头文件了
      参考
      MatLab 7 如何在vc中调用?好像少了matlab.hpp
      【原创】VC6.0调用Matlab6.5数学库函数和图形库函数编程实例

H5
Q:在VC6.0 + Matlab R2009b联合编程时,编译成exe文件后,执行exe文件的时候为什么遇到如下错误:MATLAB:I18n:MissingICUData - ICU data not found. The program '[1672] F:\***.exe: Native' has exited with code 2 (0x2).
A:
   出现这种错误的原因很多,有可能是因为缺少需要加入的链接库。
   参考
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

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

GMT+8, 2024-10-4 19:26 , Processed in 0.050941 second(s), 14 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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