代码之家  ›  专栏  ›  技术社区  ›  Jonas

Matlab程序员教程[关闭]

  •  23
  • Jonas  · 技术社区  · 14 年前

    我很快就会有一些新的学生,他们将编写matlab代码。他们是新的MATLAB,但他们有经验的编码在爪哇和C++。

    我要让他们通过 Getting Started matlab帮助部分。此外,我想给他们一个小教程,目的是防止他们犯一些最常见的错误,人们在切换到matlab时(例如,“matlab从1开始计数”),并向他们展示一些他们可能不知道的功能,当他们来自其他语言时(例如,“你可以直接从数组中减去一个标量,和foR Vectors,有bsxfun”)。

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

    5 回复  |  直到 11 年前
        1
  •  15
  •   High Performance Mark    14 年前

    足够尖刻的评论,这里也有一个答案:

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

    这足以让他们忙上一个小时左右。

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

    1. 工具的非生产性使用,重新键入可以从历史中容易地被召回的命令,使用C(或Java)风格的文件读取命令而不是UUnPutt,当MATLAB可以为您做时,慢慢地打入脚本以绘制图形,想知道编辑器右边边距中的所有橙色线意味着什么,以及曲线状的下划线,试图无花果。当帮助工具能够告诉他们,很多其他的东西,很多经验丰富的matlab用户花了很多时间去学习的时候,你就可以自己解决问题。
    2. 浮点运算不是实数。
    3. 可能还有很多其他的东西。
        2
  •  17
  •   yuk    14 年前

    我同意以前的回答,但我想说 标引 是研究matlab的第一个也是最重要也是最复杂的概念。我看到很多C程序员从matlab开始,只写循环,很多循环,有些荒谬的东西,比如

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

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

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

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

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

        3
  •  10
  •   Chinmay Kanchi    14 年前

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

        4
  •  8
  •   Community CDub    7 年前

    对于可能导致混淆的意外或非直观的matlab特性,这个问题中有一些很好的提示:

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

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

    现在给我0.02美元。基于我见过的最常问的问题,我想说,你要确保他们对以下概念有很好的理解:

    下面是一些已经在matlab中实现的简洁特性,可以节省一些时间和精力:

        5
  •  5
  •   Mikhail Poda    14 年前

    Matlab在概念上与您提到的其他语言有很大的不同:

    • Java使用上流方式使用单元格
    • global persistent 变量是 static 用Java语言
    • 图形用户界面处理的只是类型的数字 double
    • 嵌套函数是 closures Java和C/C++都没有这样的特性
    • 很少使用 private 和@type文件夹的可见性范围
    • 阵列处理技巧
    • 使用Matlab语法与Java/COM/NET非常容易的互操作性
    • variadic function arguments ,函数参数的处理 varargin / varargout
    • memory management
    推荐文章