helen 发表于 2005-11-3 00:04

[原创] [原创]自己总结收集的Matlab疑问和解答(每日更新)

首先,本人学习Matlab有一段时间,对与Matlab编程还算比较熟悉!<br>这些都是我个人在学习过程中遇到的一些疑问,最后自己寻找到了解决的方法!<br>期待和大家一起分享!!!我会定期地发一些这样的问答!!!!!!<br>(自己夸一下,其中的一些解决方法还是瞒有意思和创新的))<br>对与在Matlab学习中所遇到的疑问都可以在这里发布,大家一起讨论!!!!<br><br><FONT color=#e61a42><STRONG>问: Matlab仿真中怎样编辑Scope中的图象???</STRONG></FONT><br>答: 实现的方法有以下的几种:<br>1)PrintScreen,然后粘贴到Windows位图编辑器,选择图像点击右键,选择“反色”即可;<br>2)在Scope中,它的参数设置的第二页,有一个Save Data to Workplace,将它选中,然后在下面的方框            <br>中指定变量名,然后用plot命令画出;<br>3)直接在模型上再加一个,to Workplace模块,也用plot画出;<br>4) 等scope显示出来图像以后,在matlab上运行<br>set(0,'ShowHiddenHandles','On')<br>set(gcf,'menubar','figure')<br>这时候你会发现scope的工具栏的上面多了一行,点击insert-axes,鼠标会变成十字形状,然后再图像的任意一处双击左键出现一个对话框PropertyEditor,选中style在窗口的右便会出现color,这时你就可以任意修改背景颜色了。<br>
[此贴子已经被作者于2005-11-3 0:10:50编辑过]

zheng_xh826 发表于 2005-11-20 11:23

楼主真牛!

helen 发表于 2005-11-3 00:05

<FONT color=#dd2248><STRONG>问: 怎样进行S-function的编程和使用???</STRONG></FONT><BR>答: S-function也就是System-function的缩写。说得简单,S-function就是用MATLAB所提供的模型不能完全满足用户,而提供给用户自己编写程序来满足自己要求模型的接口。要了解 S-function,必须了解以下知识: <BR>(1)direct feedthrough <BR>(2)dynamically sized inputs <BR>(3)setting sample times and offsets <BR>一.Direct feedthrough <BR>direct feedthrough意思是说系统的输出或可变采样时间是否受到输入的控制。大家清楚有的系统是受到输入控制如: <BR>y=k*u (u是输入,k是放大因子,y是输出) <BR>而有的系统输出是不受到输入影响,如: <BR>输出:y=x <BR>dx=u ,x表示状态 <BR>二.Dynamically sized inputs <BR>主要是给出:输入连续状态数目(size.NumContStates),离散状态数目(size.NumDiscStates) <BR>,输出数目(size.NumOutputs),输入数目(size.NumInputs),Direct Feedthrough(size.Dir Feedthrough)。 <BR>三.Setting sample times and offsets <BR>Setting smaple times and offsets主要设置采样时间<BR>

helen 发表于 2005-11-3 00:06

<FONT color=#cc3352><STRONG>问: 在同一个M文件中,怎样实现参数的传递???</STRONG></FONT><BR>答: 在同一个M文件中传递参数的几种方式:<BR>1):  assignin(‘base’,’para’,para);<BR>在后面的程序中,就可以直接调用了:<BR>Para=evalin(‘base’,’para’) ;<BR>2) :在当前的对象中;set(h0bject,’userdata’,[]) ;<BR>                    Set(h0bject,’userdata’,para) ;<BR>在后面的程序中就可以直接调用了:<BR>                 Para=get(h0bject,’userdata’) ;<BR>这里h0bject为某一对象的句柄<BR>3);直接使用句柄,该方法最为简便而且安全性最高;<BR>                   Handles.xxx=?????;<BR>                   Guidata(h0bject,handles);<BR>   在后面的程序中,就可以直接调用<BR>                   Handles.xxx=????<BR>

helen 发表于 2005-11-3 00:07

<FONT color=#cc3352><STRONG>问: 怎么把Matlab中数组元素写入到文本文档中???</STRONG></FONT><BR><BR>答: 下面是几个常用的函数:<BR>(1)matGetNextMatrix:读取MAT文件中的下一个矩阵,调用格式如下:<BR>integer*4 function matGetNextMatrix(mfp)<BR>integer*4 mfp        <BR>说明:函数读取mfp所指向的MAT文件的下一个矩阵的数据并返回一个mxArray类型的指针。<BR>(2)matGetDir:获得MAT文件中的所有矩阵目录,调用格式如下:<BR>integer*4 function matGetDir(mfp,num)<BR>integer*4 mfp,num<BR>说明:函数从mfp指向的MAT文件中获取所有矩阵的目录。如果执行成功,将返回一个字符串指针数组,数组每个元素均为字符串指针,指向的字符串表示MAT文件中矩阵的目录。若函数执行失败,num返回为-1,并连接一个空指针。如果num为0,则表示MAT文件没有矩阵。<BR>(3)mexErrMsgTxt:用于输出错误信息,并返回到MATLAB命令提示符下,调用格式如下:<BR>subroutine mexErrMsgTxt(error_smg)<BR>character*(*)error_msg<BR>说明:error_smg为字符串常量,当程序执行后,在MATLAB窗口中显示错误信息error_smg,并终止程序运行。<BR>(4)mxGetM、mxGetN:分别用来获取矩阵的行数和列数,调用格式相同,格式如下:<BR>integer*4 function mxGetN(pm)<BR>integer*4 pm<BR>说明:pm为形式参数,指定一个矩阵,返回整数。<BR>(5)mxIsNumeric:判断矩阵是否为数值类型矩阵,调用格式如下:<BR>integer*4 function mxIsNumeric(pm)<BR>integer*4 pm<BR>(6)mxCreateFull:创建一个二维的未赋值的满矩阵,调用格式如下:<BR>integer*4 function mxCreateFull(m,n,ComplexFlag)<BR>integer*4 m,n,ComplexFlag<BR>说明:m,n分别为创建矩阵的行数和列数。ComplexFlag为0表示创建实数类型矩阵,ComplexFlag为1表示创建复数类型矩阵。<BR>(7)mxGetPr、mxGetPi:获得矩阵的实数或虚数部分,调用格式相同,如下:<BR>integer*4 function mxGetPr(pm)<BR>integer*4 pm<BR>说明:如果函数执行成功则获得一个指向pm第一个实数部分的指针。<BR>(8)mxCopyPtrToReal8、mxCopyReal8ToPtr:将某个矩阵的实数或虚数部分的数据复制到一个实数组中,后一个正好相反,调用格式如下:<BR>subroutine mxCopyPtrToReal8(px,y,n)<BR>integer*4 px,n<BR>real*8 y(n)<BR>subroutine mxCopyReal8ToPtr(y,px,n)<BR>integer*4 px,n<BR>real*8 y(n)<BR>说明:px为指向某个矩阵的实数或虚数部分的指针,n为需要复制单元的个数,y为实数类型的数组。

helen 发表于 2005-11-3 00:08

<P>今天暂时就发这么多!以后会定期来更新!!</P>
<P>期待有更多好地问题和大家分享!</P>

helen 发表于 2005-11-3 00:20

<FONT color=#d52b4d><STRONG>问: 在Matlab/Work文件夹中存在以后缀为.asv结尾的文件,起什么作用?</STRONG></FONT><BR><BR>答: 没有任何作用,只是像Word一样备分文件,可以不保存这样的文件。操作如下:<BR>在Matlab工作主窗口中,<BR>file-&gt;preferences-&gt;editor/debugger--&gt;auto save,uncheck "autosave on" checkbox<BR>

helen 发表于 2005-11-3 00:21

<FONT color=#c43c57><STRONG>前一阵子同学装上的Matlab打开后的字都是模糊的!后来在水木清华的BBS中找到了解决的方法,帮助同学彻底解决了问题! 为什么会出现这样的情况呢???</STRONG></FONT><BR><BR>引起matlab6.5字迹不清的原因有: <BR>1、升级显卡。 <BR>2、安装的时候选择了matlab web server <BR><BR>解决的方法如下:<BR><BR>1、在控制面板-管理工具-服务 中取消 matlab server 的服务 <BR><BR>2、安装的时候不选择 matlab web server, 其实matlab6.5干扰opengl是主要原因!只有采取上述方法,才可以做出三维图形,否则作不出!! 或者在画图的时候用opengl neverselect.<BR><BR>3. matlab6.5安装好,运行matlab后,会提示&lt;matlabboot&gt;\toolbox\rtw\targets\osek\osek的info.xml的&lt;name&gt;should end with &lt;\name&gt;,以及另外一个地方,也是这个工具箱下的,好像是demo中的那个info.xml文件中的&lt;name&gt;与&lt;\name&gt;没有匹配,也可能导致 command窗口中出现一大堆的警告什么的解决办法就是根据提示,用记事本打开那个info.xml文件,将&lt;name&gt;与&lt;\name&gt;匹配起来,保存这个info.xml文件,以后打开就不会再出现警告信息了。 <BR><BR>4. 另外,好像没有选择恰当在字体也可能导致显示模糊 解决办法是在matalb是运行主界面的file菜单下的reference菜单项,在弹出的 窗口中进行适当的设置即可.<BR>

helen 发表于 2005-11-3 12:39

<FONT color=#ee113d><STRONG>问:  在Matlab图形中怎样输入特殊符号???</STRONG></FONT><BR><BR><FONT color=#3809f7><STRONG>答: 上标用 ^(指数)  下标用 _(下划线)</STRONG></FONT><BR><BR>调用方式为:<BR>^{任意字符}, _{任意字符}, 注意{}的使用!<BR>希腊字母等特殊字符用 \加拼音 如:<BR><BR>α \alpha,   β \beta ,   γ \gamma    θ \theta    Θ \Theta<BR>Г \Gamma   δ \delta    Δ \Delta      ξ \xi          Ξ \Xi<BR>η \elta        ε \epsilong     ζ \zeta      μ \miu     υ \nu      τ \tau <BR>λ \lamda      Λ \Lamda      π \pi        Π \Pi       σ \sigma   Σ \Sigma <BR>φ \phi      Φ \Phi     ψ \psi     Ψ \Psi      χ \chi    ω \ommiga     Ω \Ommiga<BR>&lt; \leq       &gt; \geq     不等于 \neq      &lt;&lt; \ll     &gt;&gt; \gg<BR>正负 \pm   左箭头 \leftarrow   右箭头 \rightarrow  上箭头 \uparrow<BR><BR>体会以下两例:<BR>figure, title('\zeta^{-t}sint'); <BR>figure, title('x~{\chi}_{\alpha}^{2}(3)');<BR>

helen 发表于 2005-11-3 12:41

<STRONG><FONT color=#f70938>问: matlab里有关于集合运算和二进制数的运算的函数吗?</FONT><BR></STRONG><BR>答: 进行集合运算的函数有如下的一些:<BR>intersect:集合交集 <BR>ismember :是否集合中元素 <BR>setdiff  :集合差集 <BR>setxor   :集合异或(不在交集中的元素) <BR>union    :两个集合的并 <BR>unique   :返回向量作为一个集合所有元素(去掉相同元素) <BR><BR>对于二进制数的处理运算函数有如下:<BR><BR>dec2bin(x) 是把十进制整数x变换为二进制   <BR>bin2dec(y) 是把二进制数y变换为十进制数 <BR>base2dec('x',a)  是把a进制数x变化为十进制数   <BR>dec2base(y,a)    是把十进制数y变化为a进制数 <BR><BR>移位,循环,与,反等操作函数:<BR>BITAND——对二进制数进行与操作;<BR>BITOR——对二进制数进行或操作;<BR>BITXOR——对二进制数进行异或操作;<BR>BITSHIFT——对二进制数进行移位操作。<BR><BR>详细使用方法和其他函数可以参看help!!!!!<BR>
页: [1] 2 3
查看完整版本: [原创] [原创]自己总结收集的Matlab疑问和解答(每日更新)