23

MATLAB コードを書く新入生がまもなく何人か入ります。MATLAB は初めてですが、Java と C++ でのコーディング経験があります。

MATLAB ヘルプのGetting Startedセクションを確認してもらいます。さらに、MATLAB に切り替える際によくある間違い (「MATLAB は 1 からカウントを開始する」など) を犯さないようにするための小さなチュートリアルを提供し、そうでない可能性のある機能をいくつか紹介したいと思います。他の言語から来る場合は注意してください (たとえば、「スカラーを配列から直接減算できます。ベクトルの場合は bsxfun があります」)。

私が彼らに伝えるべき最も重要なことは何ですか?

4

5 に答える 5

18

以前の回答に同意しますが、MATLAB を研究する上で、インデックス作成は最初で最も重要で複雑な概念だと思います。私は、MATLAB から始めた多くの C プログラマーが、ループをたくさん書いているのを見ました。

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

シンプルの代わりにa=1:10;

したがって、行列プログラミングの概念について読むことをお勧めします。

  • 単純なベクトルと行列を作成する方法
  • 索引付けに使用できる変数
  • インデックスを作成して適用する方法
  • 論理演算と関数、論理インデックスと数値インデックス (find 関数)
  • 式の右側と左側の索引付け
  • 数値行列とセル配列のインデックス付けの違い
  • 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. ファイルからのデータのインポート、ファイルへのデータのエクスポート、読み込みと保存。

それは彼らを1時間ほど忙しくさせるのに十分なはずです.

明確にするために、次のような一般的な Matlab エラーを回避するように学生に教えるのに役立つこれらのトピックを提案します。

  1. ツールの非生産的な使用、履歴から簡単に呼び出せるコマンドの再入力、uuimport の代わりに C (または Java) スタイルのファイル読み取りコマンドの使用、Matlab が実行できるときにスクリプトをゆっくりと入力してグラフィックスを描画する、ちょっとしたことを不思議に思うエディタの右マージンにあるオレンジ色の線は意味を表し、波線の下線は、ヘルプ機能が教えてくれるときに自分で物事を理解しようとするものであり、多くの経験豊富な Matlab ユーザーが学ぶのに何年もかかった他の多くのことを意味します。
  2. 浮動小数点演算は現実的ではありません。
  3. そしておそらく他の多くのものも。
于 2010-04-22T15:16:44.023 に答える
12

C ファミリー言語から来た人にとって、要素単位の演算子は新しいものです。./and.*演算子を発見するのに数か月かかりました。それ以前は、要素単位の操作の for ループを記述していました。だからこそ指摘されるべきことなのかもしれません。

于 2010-04-22T21:51:23.973 に答える
9

混乱を招く可能性のある予期しないまたは非直感的な MATLAB 機能に関して、この質問にはいくつかの良い指針があります。

クールな時間節約/効率化のトリックに関して、この他の質問にはいくつかの良い例があります:

また、より高度な可能性のあるいくつかのトピックについては、この質問への回答を参照できます。

今私の$ 0.02のために。SO で最も頻繁に尋ねられた種類の質問に基づいて、次の概念を十分に理解していることを確認する必要があると思います。

また、MATLAB に既に実装されており、時間と労力を節約できる優れた機能がいくつかあります。

于 2010-04-22T15:58:55.510 に答える
5

MATLAB は、いくつかの点で、あなたが言及した他の言語とは概念的に大きく異なります。

  • セルが使用され、Java はアップキャストを使用します
  • globalpersistent変数はJavastaticです
  • gui ハンドルは単なる型の数値ですdouble
  • ネストされた関数はクロージャーであり、Java にも C/C++ にもそのような機能はありません
  • めったに使用されないprivate@TYPE フォルダー (可視性スコープ用)
  • 配列処理のトリック
  • MATLAB 構文を使用した Java/COM/.Net との非常に簡単な相互運用性
  • 関数の可変引数varargin, /による関数の引数の扱いvarargout
  • メモリ 管理
于 2010-04-22T19:40:14.040 に答える