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

仿真论坛MATLAB 版 FAQ Beta —— B. 基础编程

  [复制链接]
发表于 2011-5-14 16:40:47 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
 楼主| 发表于 2011-5-14 16:42:05 | 显示全部楼层 来自 黑龙江哈尔滨
Simdroid开发平台
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



回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

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

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

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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