23

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

我将让他们阅读 MATLAB 帮助的入门部分。另外,我想给出一个小教程,目的是防止他们犯一些人们在切换到 MATLAB 时最常见的错误(例如“MATLAB 从 1 开始计数”),并向他们展示一些他们可能不会的特性当来自其他语言时要注意(例如“你可以直接从数组中减去一个标量,对于向量,有 bsxfun”)。

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

4

5 回答 5

18

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

for i=1:10
    a(i)=i;
end

而不是简单的a=1:10;.

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

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

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

于 2010-04-22T16:28:59.883 回答
15

足够简短的评论,这也是一个答案:

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

这应该足以让他们忙碌一个小时左右。

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

  1. 该工具的非生产性使用,可以很容易地从历史中调用的重新键入命令,使用 C(或 Java)样式的文件读取命令而不是 uuimport,当 Matlab 可以为您完成时,慢慢键入脚本来绘制图形,想知道所有的小编辑器右边距中的橙色线表示和弯曲的下划线,当帮助工具可以告诉他们时,试图自己解决问题,还有很多其他的东西,Matlab 用户需要很长时间才能学习更多的经验。
  2. 浮点运算不是真实的。
  3. 可能还有很多其他的东西。
于 2010-04-22T15:16:44.023 回答
12

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

于 2010-04-22T21:51:23.973 回答
9

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

关于很酷的省时/效率技巧,this other question有一些很好的例子:

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

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

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

于 2010-04-22T15:58:55.510 回答
5

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

  • 使用单元格是 Java 使用向上转换
  • globalpersistent变量static在Java
  • gui 处理只是类型的数字double
  • 嵌套函数是闭包,Java 和 C/C++ 都没有这样的特性
  • 很少使用private和@TYPE 文件夹用于可见性范围
  • 数组处理技巧
  • 使用 MATLAB 语法与 Java/COM/.Net 非常容易的互操作性
  • 可变函数参数varargin,用/处理函数参数varargout
  • 内存 管理
于 2010-04-22T19:40:14.040 回答