程序员的MATLAB教程

时间:2010-04-22 14:13:31

标签: matlab bsxfun

我很快就会找到一些新学生,他们将编写MATLAB代码。他们是MATLAB的新手,但他们有使用Java和C ++编写的经验。

我将让他们浏览MATLAB帮助的Getting Started部分。另外,我想给出一个小教程,目的是防止他们在切换到MATLAB时犯下一些人们常犯的错误(例如“MATLAB从1开始计数”),并向他们展示一些他们可能没有的功能。要知道何时来自其他语言(例如“你可以直接从数组中减去一个标量,对于向量,那就是bsxfun”)。

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

5 个答案:

答案 0 :(得分:17)

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

这样荒谬
for i=1:10
    a(i)=i;
end

而非简单a=1:10;

所以我建议他们阅读矩阵编程概念:

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

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

答案 1 :(得分:15)

足够狡猾的评论,这里也是一个答案:

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

    为了澄清,我建议这些主题帮助您教您的学生避免常见的Matlab错误,包括;

    1. 该工具的非生产性使用,重新输入可以从历史中轻松调用的命令,使用C(或Java)样式文件读取命令而不是uuimport,在Matlab可以为您完成时慢慢输入脚本来绘制图形,想知道是什么编辑器右边缘的所有小橙色线条都意味着波浪形的下划线,当帮助设施告诉他们时,他们试图自己解决问题,Matlab用户需要花费很多时间来学习其他东西。
    2. 浮点运算不是真的。
    3. 也可能还有很多其他的东西。

答案 2 :(得分:10)

对于来自C系列语言的人来说,元素操作符是新的。我花了几个月的时间才发现了./.*运算符。在此之前,我曾经为元素操作编写for循环。所以也许应该指出这一点。

答案 3 :(得分:8)

对于可能导致混淆的意外或非直观的MATLAB功能,这个问题有一些好的指针:

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

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

现在我的0.02美元。根据我在SO上经常提到的各种问题,我会说你会确保他们对以下概念有一个很好的理解:

以下是MATLAB中已经实现的一些简洁功能,可以节省一些时间和精力:

答案 4 :(得分:5)

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

  • 使用的单元格是Java使用upcasting
  • globalpersistent变量在Java中是static
  • gui只处理double
  • 类型的数字
  • 嵌套函数是closures,Java和C / C ++都没有这样的功能
  • 很少使用private和@TYPE文件夹进行可见性范围设定
  • 数组处理技巧
  • 使用MATLAB语法与Java / COM / .Net非常容易的互操作性
  • variadic function arguments,使用varargin / varargout
  • 处理函数参数
  • memory management