程序员MATLAB教程

程序员MATLAB教程,matlab,bsxfun,Matlab,Bsxfun,我很快就会有一些新学生,他们将编写MATLAB代码。他们是新的MATLAB,但他们有经验的编码在爪哇和C++。 我将让他们浏览MATLAB帮助中的部分。此外,我想提供一个小教程,目的是防止他们在切换到MATLAB时犯一些最常见的错误(例如,“MATLAB从1开始计数”),并向他们展示一些来自其他语言时可能不知道的功能(例如。“您可以直接从数组中减去标量,对于向量,有bsxfun”) 我应该告诉他们的最重要的事情是什么?够了,这里也有一些答案: Matlab桌面:所有窗口的用途,将代码从历史拖回命

我很快就会有一些新学生,他们将编写MATLAB代码。他们是新的MATLAB,但他们有经验的编码在爪哇和C++。 我将让他们浏览MATLAB帮助中的部分。此外,我想提供一个小教程,目的是防止他们在切换到MATLAB时犯一些最常见的错误(例如,“MATLAB从1开始计数”),并向他们展示一些来自其他语言时可能不知道的功能(例如。“您可以直接从数组中减去标量,对于向量,有bsxfun”)


我应该告诉他们的最重要的事情是什么?

够了,这里也有一些答案:

  • Matlab桌面:所有窗口的用途,将代码从历史拖回命令窗口、变量检查器等
  • 绘图:不仅仅是绘图命令,还包括如何使用绘图GUI工具,以及如何从图形创建M文件
  • 脚本和函数的M文件,以及它们之间的主要区别
  • M-Lint,剖析器
  • 使用Matlab作为教学浮点运算的危险和陷阱的工具
  • 获取帮助:在命令行、web、文档、文件交换
  • 设置路径和当前工作目录
  • 从文件导入数据、将数据导出到文件、加载和保存
  • 这应该足以让他们忙上一个小时左右

    为了澄清,我提出这些主题,以帮助您教您的学生避免常见的Matlab错误,包括:

  • 该工具的非生产性使用,使用C(或Java)重新键入可以轻松从历史记录中调用的命令设置文件读取命令的样式,而不是uuimport,当Matlab可以为您绘制图形时,缓慢地键入脚本来绘制图形,想知道编辑器右页边距中所有橙色的小线条和弯曲的下划线是什么意思,试图在帮助工具可以告诉他们的情况下自己解决问题,还有很多其他事情体验Matlab用户花了很长时间学习
  • 浮点运算不是真的
  • 可能还有很多其他的东西

  • 关于可能导致混淆的意外或非直观的MATLAB功能,在这个问题中有一些很好的提示:

    关于超酷的省时/高效技巧,另一个问题有一些很好的例子:

    对于一些可能更高级的主题,您可以参考此问题的答案:

    现在是我的$0.02。根据我见过的最常被问到的各种问题,我想说,你应该确保他们对以下概念有很好的理解:

    • 读取和写入不同格式的数据文件,例如使用、、及其所有写入等效项
    • 如何有效应对
    • 问题,这些问题是如何表示的,以及如何修改它们(这将涉及讨论和如何处理)
    • 如何使用来控制各种图形对象的外观
    以下是一些已经在MATLAB中实现的简洁功能,它们可以节省一些时间和精力:

    • 用于执行各种功能,如和
    • 要创建的函数,如和
    • ,喜欢和

    我同意前面的答案,但我要说的是,索引是学习MATLAB的第一个也是最重要也是最复杂的概念。我看到许多C程序员从MATLAB开始只是写循环,很多循环,像

    for i=1:10
        a(i)=i;
    end
    
    而不是简单的
    a=1:10;

    因此,我建议他们阅读矩阵编程概念:

    • 如何创建简单的向量和矩阵
    • 哪些变量可用于索引
    • 如何创建和应用索引
    • 逻辑操作和函数、逻辑和数字索引(查找函数)
    • 索引表达式的右侧和左侧
    • 索引数值矩阵与单元数组的区别
    • 如何使用索引作为不同函数的输出,如sort、unique、ismember等
    • 不能将索引应用于中间结果

    至于生产率,我想补充一点,知道如何使用编辑器的单元格模式非常有用。

    MATLAB在某些方面与您提到的其他语言在概念上有很大不同:

    • 使用的单元格是Java使用的向上投射
    • global
      persistent
      变量在Java中是
      static
    • gui处理的只是类型为
      double
    • 嵌套函数是,Java和C/C++都没有这样的特性
    • 很少使用
      private
      和@TYPE文件夹进行可见性范围界定
    • 数组处理技巧
    • 使用MATLAB语法与Java/COM/.Net非常容易地互操作
    • ,使用
      varargin
      /
      varargout

    对于那些来自C族语言的人来说,元素操作符是新的。我花了几个月的时间发现了
    /
    *
    操作符。在那之前,我常常为元素操作符编写For循环。所以也许这是应该指出的。不仅仅是Matlab开始计算t 1——几乎每个人都是这样。只有感染了C语言的程序员才会从0开始计数。如果你怀疑我,看看你左手上的手指,开始计数。:-)更严重的是,他们将编写什么样的Matlab代码?现在这是一个相当大的产品,在信号处理领域感兴趣的功能可能不同与数值乐观主义者感兴趣的特性不同。@High Performance Mark:他们将进行图像分析(和一些操作)