Matlab プログラミング言語。 数学者を助けるために: MATLAB のレビュー Matlab プログラミング言語

24.03.2024

)。 化学測定で使用される汎用ツールの中で、MatLab パッケージは特別な位置を占めています。 彼の人気は異常に高い。 これは、MatLab が多次元データの処理に強力で多用途であるためです。 パッケージの構造そのものが、行列計算を実行するための便利なツールとなっています。 MatLab を使用して研究できる問題の範囲には、行列解析、信号および画像処理、ニューラル ネットワークなどが含まれます。 MatLab は、上級ユーザーがプログラムされたアルゴリズムを理解できるようにする高レベルのオープンソース言語です。 シンプルな組み込みプログラミング言語により、独自のアルゴリズムを簡単に作成できます。 長年にわたる MatLab の使用により、膨大な数の関数とツールボックス (特殊なツールのパッケージ) が作成されてきました。 最も人気のあるのは、Eigenvector Research, Inc. の PLS ToolBox パッケージです。

1. 基本情報

1.1. MatLab の作業環境

プログラムを起動するには、アイコンをダブルクリックします。 図のような作業環境が目の前に広がります。

作業環境 マットラボ 6.x以前のバージョンのワークスペースとは若干異なり、多くのサポート要素にアクセスするためのより便利なインターフェイスがあります。

作業環境 マットラボ 6.x次の要素が含まれています。

    ボタンとドロップダウン リストを備えたツールバー。

    Launch Pad タブと ワークスペース, ここから、さまざまな ToolBox モジュールやワークベンチのコンテンツにアクセスできます。

    タブ付きウィンドウ コマンド履歴そして カレントディレクトリ、以前に入力したコマンドの表示と再呼び出し、および現在のディレクトリの設定を目的としています。

    「入力」プロンプトと点滅する垂直カーソルを含むコマンド ウィンドウ。

    ステータスバー。

作業環境の場合 マットラボ 6.x図に示されているウィンドウの一部が表示されていない場合は、[表示] メニューで適切な項目を選択する必要があります。 コマンドウィンドウ、コマンド履歴、現在のディレクトリ、ワークスペース、起動パッド。

コマンドはコマンド ウィンドウに入力する必要があります。 コマンド ライン プロンプトを示す記号 » は入力する必要はありません。 作業領域を表示するには、スクロール バーまたは Home、End キーを使用して左右に移動し、PageUp、PageDown キーを使用して上下に移動すると便利です。 コマンド ウィンドウの作業領域内を移動した後、カーソルが点滅しているコマンド ラインが突然消えた場合は、Enter キーを押してください。

MatLab がそのコマンドを実行したり式を評価したりするには、コマンドまたは式の入力を Enter キーを押して終了する必要があることに注意してください。

1.2. 簡単な計算

コマンドラインに「1+2」と入力し、Enterを押します。 その結果、MatLab コマンド ウィンドウには以下が表示されます。

米。 2 主成分分析のグラフ表示

MatLab プログラムは何をしましたか? まず、1+2 の合計を計算し、その結果を特殊変数 ans に書き込み、その値 3 をコマンド ウィンドウに表示しました。 応答の下にはカーソルが点滅するコマンド ラインがあり、MatLab でさらなる計算を行う準備ができていることを示しています。 コマンドラインに新しい式を入力して、その意味を調べることができます。 たとえば、(1+2)/4.5 を計算するなど、前の式を引き続き使用する必要がある場合、最も簡単な方法は、ans 変数に保存されている既存の結果を使用することです。 ans/4.5 (小数点を入力するときにドットが使用されます) と入力して、 を押します。 入力、 それが判明

米。 3 主成分分析のグラフ表示

1.3. エコーコマンド

MatLab での各コマンドの実行にはエコーが伴います。 上の例では、答えは ans = 0.6667 です。 多くの場合、エコーによりプログラムの動作を認識することが困難になり、その後プログラムがオフになる可能性があります。 これを行うには、コマンドがセミコロンで終わる必要があります。 例えば

米。 4 ScoresPCA関数の入力例

1.4. 作業環境の保全。 MAT ファイル

すべての変数値を保存する最も簡単な方法は、[ファイル] メニューの [ワークスペースを名前を付けて保存] オプションを使用することです。 これにより、[ワークスペース変数の保存] ダイアログ ボックスが開きます。そこで、ディレクトリとファイル名を指定する必要があります。 デフォルトでは、ファイルをメイン MatLab ディレクトリの work サブディレクトリに保存することが提案されています。 プログラムは、作業結果を拡張子 mat のファイルに保存します。 これで MatLab を閉じます。 次の作業セッションで変数の値を復元するには、[ファイル] メニューの [開く] サブ項目を使用して、この保存したファイルを開く必要があります。 これで、最後のセッションで定義されたすべての変数が再び使用できるようになります。 これらは新しく入力されたコマンドで使用できます。

1.5. 雑誌

MatLab には、実行可能なコマンドと結果をテキスト ファイルに書き込む (作業ログを保存する) 機能があり、テキスト エディターから読み取ったり印刷したりできます。 ログ記録を開始するには、次のコマンドを使用します 日記。 コマンドの引数として 日記作業ログを保存するファイルの名前を指定する必要があります。 さらに入力されたコマンドとその実行結果 (一連のコマンドなど) がこのファイルに書き込まれます。

次のアクションを実行します。

    ファイルexampl-1.txtのログを開きます。

    計算を実行します。

    すべての変数を MAT ファイル work-1.mat に保存します。

    MatLab ルート ディレクトリの work サブディレクトリにあるファイル example-1.txt にログを保存し、MatLab を閉じます。

テキスト エディタで examplepl-1.txt ファイルの内容を確認します。 ファイルには次のテキストが含まれます。

a1=3;
a2=2.5;
a3=a1+a2

作業内容の保存-1
やめる

1.6. ヘルプシステム

MatLab ヘルプ ウィンドウは、[ヘルプ] メニューから [ヘルプ ウィンドウ] オプションを選択するか、ツールバーの質問ボタンをクリックすると表示されます。 コマンドを入力しても同じ操作を実行できます 助けて勝つ。 個々のトピックのヘルプ ウィンドウを表示するには、次のように入力します。 ヘルプウィンのトピック。 ヘルプ ウィンドウには help コマンドと同じ情報が表示されますが、ウィンドウ インターフェイスには他のヘルプ トピックへのより便利なリンクが用意されています。 Math Works Web ページのアドレスを使用して、会社のサーバーにアクセスし、興味のある問題に関する最新情報を入手できます。 新しいソフトウェア製品をチェックしたり、テクニカル サポート ページで問題の解決策を見つけることができます。

2. 行列

2.1. スカラー、ベクトル、行列

MatLab では、スカラー、ベクトル、行列を使用できます。 スカラーを入力するには、その値を変数に代入するだけで十分です。たとえば、

MatLab は大文字と大文字を区別するため、p と P は異なる変数であることに注意してください。 配列 (ベクトルまたは行列) を入力するには、その要素を角括弧で囲みます。 したがって、1x3 行ベクトルを入力するには、行要素をスペースまたはカンマで区切って次のコマンドを使用します。

列ベクトルを入力する場合、要素はセミコロンで区切られます。 例えば、

コマンドラインから小さな行列を直接入力すると便利です。 入力では、行列は列ベクトルとして考えることができ、その各要素は行ベクトルです。

または、行列は、各要素が列ベクトルである行ベクトルとして扱うこともできます。

2.2. 要素へのアクセス

行列要素へのアクセスは、2 つのインデックス (括弧で囲まれた行番号と列番号) を使用して実行されます。たとえば、コマンド B(2,3) は行列 B の 2 行目と 3 列目の要素を返します。 行列から列または行を選択するには、行列の列番号または行番号をインデックスの 1 つとして使用し、もう一方のインデックスをコロンに置き換えます。 たとえば、行列 A の 2 行目をベクトル z に書き込んでみましょう。

コロンを使用して行列ブロックを選択することもできます。 たとえば、行列 P から色でマークされたブロックを選択してみましょう

作業環境変数を表示する必要がある場合は、コマンド ラインにコマンドを入力する必要があります。 だれの .

作業環境には 1 つのスカラー (p)、4 つの行列 (A、B、P、P1)、および行ベクトル (z) が含まれていることがわかります。

2.3. 基本的な行列演算

行列演算を使用する場合、加算または減算の場合は行列が同じサイズである必要があり、乗算の場合は最初の行列の列数が 2 番目の行列の行数と等しくなければならないことに注意してください。 行列、数値、ベクトルの加算と減算は、プラス記号とマイナス記号を使用して実行されます。

乗算にはアスタリスク * が付いています。 サイズ 3×2 の行列を導入しましょう

行列と数値の乗算もアスタリスクを使用して実行され、右側と左側の両方で数値を乗算できます。 正方行列の整数乗は演算子 ^ を使用して行われます。

行列 P 自体を乗算して結果を確認してください。

2.4. 特殊なタイプの行列の作成

長方形行列をゼロで埋めることは、組み込み関数によって実行されます。 ゼロ

単位行列は関数を使用して作成されます

関数を呼び出した結果、1 からなる行列が形成されます。 もの

MatLab は、行列を乱数で埋める機能を提供します。 関数の結果 ランドは 0 と 1 の間で一様に分布する数値の行列であり、関数 ランドン- ゼロ平均と単位分散の正規法則に従って分布した数値の行列。

関数 診断するベクトルから対角行列を形成し、要素を対角に沿って配置します。

2.5. 行列の計算

MatLab には、行列を操作するためのさまざまな関数が含まれています。 したがって、たとえば、行列の転置はアポストロフィを使用して行われます "

逆行列は関数を使用して求められます 投資正方行列の場合

3. MatLab と Excel の統合

MatLab と Excel を統合すると、Excel ユーザーは、データ処理、さまざまな計算、結果の視覚化のための多数の MatLab 関数にアクセスできるようになります。 excllink.xla アドインは、この Excel 拡張機能を実装します。 MatLab と Excel 間の通信用に特別な関数が定義されています。

3.1. Excelの設定

MatLab と連携して動作するように Excel を設定する前に、インストールされている MatLab のバージョンに Excel Link が含まれていることを確認する必要があります。 メインの MatLab ディレクトリの exclink サブディレクトリまたはツールボックス サブディレクトリに、excllink.xla アドインを含むファイルが存在する必要があります。 Excel を起動し、[ツール] メニューから [アドイン] を選択します。 ダイアログ ボックスが開き、現在利用可能なアドオンに関する情報が表示されます。 「参照」ボタンを使用して、excllink.xla ファイルへのパスを指定します。 ダイアログボックスのアドオンのリストにこの行が表示されます。 MatLab で使用する Excel Link 2.0フラグが設定された状態。 [OK] をクリックすると、必要なアドインが Excel に追加されます。

Excel には、putmatrix、getmatrix、evalstring の 3 つのボタンを含む Excel Link ツールバーが追加されたことに注意してください。 これらのボタンは、Excel と MatLab の間の関係 (行列データの交換、Excel 環境からの MatLab コマンドの実行) を実装するために必要な基本アクションを実装します。 Excel を再度起動すると、excllink.xla アドインが自動的に接続されます。

Excel と MatLab を連携して作業するには、さらにいくつかの設定が必要です。これらの設定は Excel でデフォルトで受け入れられます (ただし、変更できます)。 [ツール] メニューの [オプション] に移動すると、[オプション] ダイアログ ボックスが開きます。 [全般] タブを選択し、R1C1 参照スタイル フラグがオフになっていることを確認します。 セルには A1、A2 などの番号が付けられます。 [編集] タブで、[Enter 後に選択項目を移動] フラグを設定する必要があります。

3.2. MatLab と Excel 間のデータ交換

Excel を起動し、前のセクションで説明したように必要な設定がすべて行われていることを確認します (MatLab を閉じる必要があります)。 Excel の要求に応じて小数点以下をピリオドで区切って、セル A1 から C3 に行列を入力します。

シート上のセル データを選択して putmatrix ボタンをクリックすると、Excel ウィンドウが表示され、MatLab が実行されていないという警告が表示されます。 [OK] をクリックし、MatLab が開くまで待ちます。

Excel ダイアログ ボックスが表示され、選択した Excel セルのデータをエクスポートする MatLab ワークベンチ変数の名前を指定する入力行が表示されます。 たとえば、「M」と入力し、「OK」ボタンを使用してウィンドウを閉じます。 MatLab コマンド ウィンドウに移動し、3 行 3 列の配列を含む変数 M がワークベンチに作成されていることを確認します。

MatLab で行列 M を使用していくつかの操作 (たとえば、行列 M を反転) を実行します。

電話 投資他の MatLab コマンドと同様に、行列を反転するには、Excel から直接実行できます。 Excel Link パネルにある evalstring ボタンをクリックすると、ダイアログ ボックスが表示されます。入力行に MatLab コマンドを入力する必要があります。

IM=inv(M) 。

結果は、MatLab 環境でコマンドを実行したときに得られる結果と似ています。

Excel に戻り、セル A5 を現在のセルにして、getmatrix ボタンをクリックします。 Excel にインポートする変数の名前を入力するように求める入力行を含むダイアログ ボックスが表示されます。 この場合、そのような変数は IM です。 [OK] をクリックすると、セル A5 から A7 に逆行列要素が入力されます。

したがって、行列を MatLab にエクスポートするには、Excel シートの適切なセルを選択する必要があります。インポートするには、インポートされた配列の左上の要素となるセルを 1 つ指定するだけです。 残りの要素は配列の次元に従ってシートのセルに書き込まれ、そこに含まれるデータが上書きされるため、配列をインポートするときは注意する必要があります。

上記のアプローチは、アプリケーション間で情報を交換する最も簡単な方法です。ソース データは Excel に含まれており、MatLab にエクスポートされ、そこで何らかの方法で処理され、結果が Excel にインポートされます。 ユーザーは Excel Link ツールバー ボタンを使用してデータを転送します。 情報はマトリックスの形式で表示できます。 ワークシートの長方形の領域。 行または列に配置されたセルは、それぞれ MatLab の行ベクトルと列ベクトルにエクスポートされます。 行ベクトルと列ベクトルの Excel へのインポートも同様の方法で行われます。

4. プログラミング

4.1. M ファイル

多数のコマンドを入力し、頻繁に変更する必要がある場合、MatLab コマンド ラインからの作業が困難になります。 コマンドを使用して日記をつける 日記作業環境を整えることで少しは仕事が楽になります。 MatLab コマンドのグループを実行する最も便利な方法は、M ファイルを使用することです。このファイルにコマンドを入力し、それらを一度にまたは部分的に実行し、ファイルに保存して後で使用することができます。 M ファイル エディタは、M ファイルを操作するように設計されています。 これを利用すると、独自の関数を作成し、コマンド ウィンドウからなどから呼び出すことができます。

MatLab メイン ウィンドウの [ファイル] メニューを展開し、[新規] 項目でサブ項目 M ファイルを選択します。 図に示すように、M ファイル エディタ ウィンドウで新しいファイルが開きます。

MatLab には 2 種類の M ファイルがあります: プログラム ファイル ( スクリプト M ファイル) には、一連のコマンドとファイル関数が含まれます ( 関数 M ファイル)、ユーザー定義関数について説明します。

4.2. ファイルプログラム

エディターにコマンドを入力すると、1 つのグラフィックス ウィンドウに 2 つのグラフが作成されます。

ここで、エディターの [ファイル] メニューから [名前を付けて保存] を選択して、mydemo.m という名前のファイルをメイン MatLab ディレクトリの work サブディレクトリに保存します。 ファイルに含まれるすべてのコマンドを実行するには、「デバッグ」メニューから「実行」を選択します。 画面にグラフィックウィンドウが表示されます 図1、関数のグラフが含まれています。

ファイル プログラム コマンドがコマンド ウィンドウに出力されます。 出力を抑制するには、コマンドをセミコロンで終了する必要があります。 入力中にエラーが発生し、MatLab がコマンドを認識できない場合は、間違って入力されたコマンドまでが実行され、その後コマンド ウィンドウにエラー メッセージが表示されます。

M ファイル エディタが提供する非常に便利な機能は、いくつかのコマンドの実行です。 グラフィックウィンドウを閉じます 図1。 左ボタンを押しながらマウスを使用するか、キーを押しながら矢印キーを使用して選択します。 シフト、最初の 4 つのコマンドをテキスト項目から実行します。 実行されたコマンドに対応して、グラフィックス ウィンドウに表示されるグラフは 1 つだけであることに注意してください。 一部のコマンドを実行するには、コマンドを選択して F9 キーを押すことに注意してください。

M ファイルの個々のブロックにはコメントを付けることができます。コメントは実行中にスキップされますが、M ファイルを操作する場合には便利です。 コメントはパーセント記号で始まり、自動的に緑色で強調表示されます。次に例を示します。

既存の M ファイルを開くには、作業環境の [ファイル] メニューの [開く] 項目を使用するか、M ファイル エディタを使用します。

4.3. ファイル機能

上で説明したファイル プログラムは単なる MatLab コマンドのシーケンスであり、入力引数や出力引数はありません。 数値手法を使用する場合、および MatLab で独自のアプリケーションをプログラミングする場合は、入力引数で必要なアクションを実行し、出力引数でアクションの結果を返すファイル関数を作成できなければなりません。 ファイル関数の操作方法を理解するために、いくつかの簡単な例を見てみましょう。

多変量ケモメトリクス分析からのデータを前処理する場合、センタリングがよく使用されます。 ファイル関数を一度記述してから、センタリングを行う必要がある場所でそれを呼び出すのが合理的です。 M ファイル エディタで新しいファイルを開き、次のように入力します。

最初の行の単語 function は、このファイルに関数ファイルが含まれていることを指定します。 最初の行は関数ヘッダーで、関数の名前と入力引数と出力引数のリストが含まれます。 この例では、関数名は centering 、1 つの入力引数は X、1 つの出力引数は Xc です。 ヘッダーの後にコメントが続き、次に関数の本体 (この例では 2 行で構成されます) が続き、そこで値が計算されます。 計算された値が Xc に書き込まれることが重要です。 不要な情報が画面に表示されないように、セミコロンを忘れずに含めてください。 次に、ファイルを作業ディレクトリに保存します。 [ファイル] メニューから [保存] または [名前を付けて保存] を選択すると、[ファイル名を保存] ダイアログ ボックスが表示され、[ファイル名] フィールドにはすでに名前が中央に表示されていることに注意してください。 これは変更せず、関数ファイルを推奨された名前のファイルに保存してください。

これで、作成した関数は組み込みの sin、cos などと同じように使用できるようになります。 独自の関数は、ファイル プログラムおよび別のファイル関数から呼び出すことができます。 行列をスケーリングするファイル関数を自分で書いてみてください。 各列をその列の標準偏差で割ります。

カンマ区切りのリストに配置された複数の入力引数を使用して関数ファイルを作成できます。 複数の値を返す関数を作成することもできます。 これを行うには、出力引数をコンマで区切って出力引数のリストに追加し、リスト自体を角括弧で囲みます。 良い例は、秒単位で指定された時間を時、分、秒に変換する関数です。

複数の出力引数を指定してファイル関数を呼び出す場合、結果は適切な長さのベクトルに書き込まれる必要があります。

4.4 グラフの作成

MatLab には、ベクトルや行列をグラフィカルに表示したり、コメントを作成したりグラフを印刷したりするための広範な機能があります。 いくつかの重要なグラフィック関数について説明しましょう。

関数 プロットには、入力パラメータに関連付けられたさまざまな形式があります。たとえば、plot(y) は、y の要素とそのインデックスの区分的線形グラフを作成します。 2 つのベクトルが引数として指定された場合、plot(x,y) は y 対 x のグラフを作成します。 たとえば、sin 関数を 0 ~ 2π の範囲でプロットするには、次の操作を実行します。

プログラムは依存グラフを構築し、ウィンドウに表示します。 図1

MatLab は (ユーザーが割り当てない限り) 各プロットに異なる色を自動的に割り当て、データ セットを区別できるようにします。

チーム 持続する既存のグラフに曲線を追加できます。 関数 サブプロット 1 つのウィンドウに複数のグラフを表示できます

4.5 グラフの印刷

「ファイル」メニューの「印刷」項目とコマンド 印刷する MatLab グラフィックを印刷します。 [印刷] メニューを選択すると、一般的な標準印刷オプションを選択できるダイアログ ボックスが表示されます。 チーム 印刷する出力の柔軟性が向上し、M ファイルからの印刷を制御できるようになります。 結果は、デフォルトのプリンタに直接送信することも、指定したファイルに保存することもできます。

5. サンプルプログラム

このセクションでは、多次元データの分析で使用される最も一般的に使用されるアルゴリズムについて説明します。 データ変換の最も単純な方法 (センタリングとスケーリング) と、データ分析のアルゴリズム (PCA、PLS) の両方が考慮されます。

5.1. センタリングとスケーリング

多くの場合、分析中に元のデータを変換する必要があります。 データを変換するために最も一般的に使用される方法は、各変数をセンタリングし、標準偏差でスケーリングすることです。 マトリックスをセンタリングするための関数コードが与えられました。 したがって、以下では、関数のコードのみを示します。 天秤データ。 元のマトリックスは中央に配置する必要があることに注意してください

関数 Xs = スケーリング(X)
% スケーリング: 出力行列は Xs です
% 行列 X は中央に配置する必要があります

Xs = X * inv(diag(std(X)));

%スケーリングの終了

5.2. SVD/PCA

多変量解析で最も一般的なデータ圧縮方法は主成分分析 (PCA) です。 数学的な観点から見ると、PCA は元の行列の分解です。 バツ、つまり 2 つの行列の積として表す Tそして P

バツ = TP t+ E

マトリックス Tはスコアの行列 (スコア) と呼ばれ、行列は残差の行列です。

行列を見つける最も簡単な方法 Tそして P- と呼ばれる標準の MatLab 関数を通じて SVD 分解を使用します。 SVD .

関数 = pcasvd(X)

Svd(X);
T=U*D;
P=V;

%pcasvd の終わり

5.3 PCA/NIPALS

PCA アカウントとロードを構築するには、各ステップで 1 つのコンポーネントを計算する再帰アルゴリズム NIPALS が使用されます。 まずは元の行列 バツ変換され(最小値では中央に配置されます。参照)、行列に変わります。 E 0 , ある=0。 次に、次のアルゴリズムが適用されます。

t 2. p t = t t Eある / t t t 3. p = p / (p t p) 1/2 4. t = Eある p / p t p 5. 収束を確認し、収束していない場合は 2 に進みます。

次の計算後 ( ある-th) コンポーネントを想定します。 tある=tそして pある=p E ある+1 = Eあるt p あるの上 ある+1.

NIPALS アルゴリズムのコードは読者自身が書くことができますが、このマニュアルでは著者が独自のバージョンを示しています。 PCA を計算するとき、主成分の数 (変数numberPC) を入力できます。 必要なコンポーネントの数がわからない場合は、コマンド ラインで = pcanipals (X) と記述する必要があります。そうすれば、プログラムは元の行列の最小次元に等しいコンポーネントの数を設定します。 バツ.

関数 = pcanipals(X,numberPC)

成分数の%計算
= サイズ(X); P=; て=;

lenfth(数値PC) > 0の場合
pc = 数値PC(1);
elseif (長さ(数値PC) == 0) & X_r< X_c
pc = X_r;
それ以外
pc = X_c;
終わり;

k = 1:pcの場合
P1 = ランド(X_c, 1); T1 = X * P1; d0 = T1"*T1;
P1 = (T1" * X/(T1" * T1))"; P1 = P1/ノルム(P1); T1 = X * P1; d = T1" * T1;

d - d0 > 0.0001 の場合、
P1 = (T1" * X/(T1" * T1)); P1 = P1/ノルム(P1); T1 = X * P1; d0 = T1"*T1;
P1 = (T1" * X/(T1" * T1)); P1 = P1/ノルム(P1); T1 = X * P1; d = T1"*T1;
終わり

X = X - T1 * P1; P = 猫(1, P, P1"); T = ;
終わり

Chemometrics アドオンを使用して PCA を計算する方法については、チュートリアルで説明されています。

5.4PLS1

多変量キャリブレーションの最も一般的な方法は、潜在構造への投影 (PLS) 法です。 この方法には、予測子行列の同時分解が含まれます。 バツおよび応答行列 Y:

バツ=TP t+ E Y=UQ t+ F T=XW(P t W) –1

対応するベクトル間の相関を最大化するために、投影は一貫して構築されます。 バツ-アカウント tあるそして Y-アカウント あなたある。 データブロックの場合 Y複数の応答が含まれます (つまり、 K>1)、初期データの 2 つの投影、PLS1 と PLS2 を構築できます。 最初のケースでは、各応答に対して y k独自の射影部分空間が構築されます。 同時に請求書も T (U) と負荷 P (W, Q) どの応答が使用されるかによって異なります。 このアプローチはPLS1と呼ばれます。 PLS2 メソッドの場合、投影空間は 1 つだけ構築され、これはすべての応答に共通です。

PLS メソッドの詳細については、本書で説明されています。PLS1 アカウントとロードを構築するには、反復アルゴリズムが使用されます。 まず元の行列 バツそして Y中心

= mc(X);
= mc(Y);

そしてそれらはマトリックスに変わります E 0とベクトル f 0 , ある=0。 次に、次のアルゴリズムがそれらに適用されます

1. w t = fある t E ある 2. w = w / (w t w) 1/2 3. t = Eある w 4. q = t t fある / t t t 5. あなた = qfある / q 2 6. p t = t t Eある / t t t

次の計算後 ( ある-th) コンポーネントを想定します。 tある=tそして pある=p。 次の成分を取得するには、剰余を計算する必要があります E ある+1 = Eあるt p t に同じアルゴリズムを適用し、インデックスを置き換えます。 あるの上 ある+1.

これは本から抜粋したこのアルゴリズムのコードです

関数 = pls(x, y)
%PLS: PLS コンポーネントを計算します。
%出力ベクトルは、w、t、u、q、および p です。
%
% 開始ベクトル u として y からベクトルを選択します。

u = y(:, 1);

% 収束基準が非常に高く設定されています。
クリ = 100;

% ここから最後までのコマンドが収束するまで繰り返されます。
while (kri > 1e - 10)

% 各開始ベクトル u は uold として保存されます。
uold = u; w = (u" * x)"; w = w/ノルム(w);
t = x * w; q = (t" * y)"/(t" * t);
u = y * q/(q" * q);

% 収束基準は、u-uold のノルムを u のノルムで割ったものです。
kri = ノルム(uold - u)/ノルム(u);
終わり;

% 収束後、p を計算します。
p = (t" * x)"/(t" * t);

%終了

アドインを使用したPLS1の計算について ケモメトリクス加える Excel の投影法マニュアルで説明されています。

5.5PLS2

PLS2 のアルゴリズムは次のとおりです。 まず元の行列 バツそして Y変換 (少なくとも中心; 参照)、そしてそれらは行列に変わります E 0と F 0 , ある=0。 次に、次のアルゴリズムがそれらに適用されます。

1. 初期ベクトルを選択します あなた 2. w t = あなた t E ある 3. w = w / (w t w) 1/2 4. t = Eある w 5. q t = t t Fある / t t t 6. あなた = Fある q/ q t q 7. 収束を確認し、収束していない場合は 2 8 に進みます。 p t = t t Eある / t t t

次の計算後 ( あるああ) PLS2 コンポーネントを配置する必要があります: tある=t, pある=う、うある=w, あなたある=あなたそして q a = q。 次の成分を取得するには、剰余を計算する必要があります E ある+1 = Eあるt pFある +1 = F あるtq t に同じアルゴリズムを適用し、インデックスを置き換えます。 あるの上 ある+1.

以下にコードを示します。これも書籍から借用したものです。

関数 = plsr(x, y, a)
% PLS: PLS コンポーネントを計算します。
% 出力行列は W、T、U、Q、および P です。
% B には回帰係数が含まれ、SS には次の合計が含まれます。
% 残差の二乗。
% a は成分の数です。
%
% コンポーネントの場合: すべてのコマンドを使用して終了します。

i=1:aの場合
% 二乗和を計算します。 ssという関数を使います。
sx = ;
sy = ;

% 関数 pls を使用して 1 つの成分を計算します。
= pls(x, y);

% 残差を計算します。
x = x - t * p";
y = y - t * q";

% ベクトルを行列に保存します。
W = ;
T = ;
U = ;
Q = ;
P = ;
終わり;

% ループ後の回帰係数を計算します。
B=W*inv(P"*W)*Q";

% 最終残差 SS を二乗和ベクトルに加算します。
sx=;
sy=;

% X と Y の ss ベクトルの行列を作成します。
SS = ;

%使用したSSの割合を計算します。
= サイズ(SS);
tt = (SS * diag(SS(1,:).^(-1)) - ones(a, b)) * (-1)

% plsr の終了

関数 = ss(x)
%SS: 行列 X の二乗和を計算します。
%

ss=sum(sum(x. * x));
%SSの終わり

アドインを使用したPLS2の計算について ケモメトリクス加える Excel の投影法マニュアルで説明されています。

結論

MatLab は、データ分析用の非常に人気のあるツールです。 調査によると、全研究者の最大 3 分の 1 が Unsrambler プログラムを使用しているのに対し、Unsrambler プログラムを使用しているのは科学者の 16% のみです。 MatLab の主な欠点は価格が高いことです。 さらに、MatLab は日常的な計算にも適しています。 インタラクティブ性が欠如しているため、新しい未調査のデータセットの検索や研究計算を実行するときに不便になります。

他のほとんどのプログラミング言語と同様に、Matlab には数式を使用する機能が備わっていますが、他の多くのプログラミング言語とは異なり、Matlab のこれらの式には行列が含まれています。 式の主な構成要素は次のとおりです。

変数;

オペレーター;

機能。

変数. Matlab では、変数の型や次元を定義する必要はありません。 Matlab は新しい変数名を検出すると、自動的に変数を作成し、適切な量のメモリを割り当てます。 変数がすでに存在する場合、Matlab はその構成を変更し、必要に応じて追加のメモリを割り当てます。 例えば、

番号_ 学生 = 25

という名前の 1x1 行列を作成します 番号_ 学生そして、その唯一の要素に値 25 を格納します。

変数名は文字、数字、またはアンダースコアで構成されます。 Matlab は変数名の最初の 31 文字のみを使用します。 Matlab は大文字と小文字を区別し、大文字と小文字を区別します。 それが理由です そして ある- 同じ変数ではありません。 変数に関連付けられた行列を表示するには、変数名を入力するだけです。

数字。 Matlab は従来の 10 進数体系を使用し、オプションの小数点と数値のプラス/マイナス記号を使用します。 科学的な数体系では、次の文字が使用されます。 e 10 の累乗の乗数を決定します。 虚数が使用されます または j接尾辞として。 正しい数値の例をいくつか以下に示します。

すべての数値は次の形式で保存されます。 長さ、これらは、有効桁数が約 16 桁、範囲が約 10 -308 ~ 10,308 という限定された精度を持つ浮動小数点数です。

オペレーター。式では通常の算術演算と優先順位規則が使用されます (表 1)。

表1

Matlab パッケージの算術演算

機能。 Matlab は、次のような多数の初等数学関数を提供します。 腹筋, 平方メートル, 経験値, . 負の数の平方根または対数の計算はエラーではありません。この場合、結果は対応する複素数になります。 Matlab は、ガンマ関数やベッセル関数など、より複雑な関数も提供します。 これらの関数のほとんどには複雑な引数があります。 すべての基本的な数学関数をリストするには、次のように入力します。

ヘルプエルフーン

データ分析用のすべての Matlab 関数のリストを表示するには:

ヘルプデータファン

について知る必要がある場合は、 統計ツールボックス、 入力:

ヘルプ統計

初等関数のリストを表に示します。 2.

表2

Matlab パッケージの基本機能

数値の底の対数:。

より複雑な数学関数と行列関数を表示するには、次のように入力します。

ヘルプスペックファン

ヘルプエルマット

それぞれ。

次のようないくつかの機能 平方メートルそして , - 内蔵 これらは Matlab の一部であるため、非常に効率的ですが、計算の詳細にアクセスするのは困難です。 他の機能としては、 ガンマそして シン, m ファイルに実装されています。 したがって、コードを確認し、必要に応じて変更することもできます。

いくつかの特別な関数は、頻繁に使用される定数の値を提供します。

無限大は、ゼロで除算する場合、またはオーバーフローを引き起こす数式を実行する場合、つまり超過する場合に発生します。 リアルマックス. 数字ではありません ( NaN) 0/0 や インフ/ インフ、特別な数学的意味はありません。

関数名は予約されていないため、その値を新しいものに変更することが可能です。たとえば、次のようになります。

eps = 1. e-6

クリアeps

関係演算子 2 つの量、ベクトルまたは行列を比較するために使用されます。すべての関係演算子は 2 つの比較される量を持ち、表に示すように記述されます。 3.

機能の概要

英語のMatLab。 Matrix Laboratory は、工学および技術計算の問題を解決するためのアプリケーション プログラムのパッケージであり、このパッケージで使用される同名のプログラミング言語です。

MatLab は、Linux、Mac OS、Solaris、Microsoft Windows など、ほとんどの最新のオペレーティング システムでの使用に適しています。

プログラミング言語としての MATLAB は、1970 年代後半に Cleve Moler によって開発されました。 開発の目標は、学部の学生に、Fortran を学習することなく Linpack および EISPACK ソフトウェア ライブラリを使用する機会を提供することでした。 その後、マウラーは J. リトルおよび S. バンガートと協力して MATLAB を C で書き直し、それをさらに発展させるために 1984 年に The MathWorks 社を設立しました。 MATLAB はもともと制御システム設計を目的としていましたが、すぐに他の多くの科学および工学分野でも人気が高まりました。 また、教育、特に線形代数や数値手法の指導にも広く使用されています。

最新の MatLab は、主なデータ要素が配列である対話型システムです。 これにより、C、C++、Fortran などの「スカラー」プログラミング言語で同様のプログラムを作成する場合よりも数倍速く、行列やベクトルの演算を集中的に使用する数値メソッドをプログラムで実装できます。

MatLab の重要な利点は、関数コードがオープンであることです。これにより、経験豊富なユーザーはコードを変更して、コードを改善したり、タスクに適応させたりすることができます。 プログラミング言語としての MatLab は、Fortran のシンプルさと C の柔軟性を兼ね備えていますが、形式的な観点から見ると、MatLab は 通訳者。 MatLab API は C および Fortran で記述されたプログラムと通信するため、C\Fortran コードから MatLab 関数を呼び出すことができ、またその逆も可能であることに注意してください。

MatLab には、2 次元および 3 次元のデータを視覚化するための広範な機能があります。 高レベルのグラフィック機能とグラフィカルインターフェイスにより、ユーザーの労力を最小限に抑えながら高品質の画像を提供します。 「上級」ユーザー向けの低レベル機能にもアクセスでき、システムのグラフィック機能がさらに拡張されます。

現在、システムの機能は、マトリックス研究所のオリジナル バージョンの機能を大幅に上回っています。 The MathWorks, Inc. の発案による今日の MATLAB は、エンジニアリングおよび科学コンピューティング用の非常に効率的な言語です。 数学的な計算、科学的なグラフィックの視覚化、および学習しやすい操作環境を使用したプログラミングをサポートします。 MATLAB システムの最も有名な応用分野は次のとおりです。

数学とコンピューティング。

アルゴリズム開発。

計算実験、シミュレーションモデリング、プロトタイピング;

データ分析、調査および結果の視覚化。

科学および工学グラフィックス。

グラフィカル ユーザー インターフェイスを含むアプリケーション開発。

MATLAB は対話型システムであり、その主オブジェクトは配列であり、その次元を明示的に指定する必要はありません。 これにより、ベクトル行列の定式化に関連する多くの計算問題を解決できるようになります。

バージョン MATLAB 6.1 は、開発者の最後から 2 番目の成果です (最後は MATLAB 6.5 でした)。

MATLAB システムは、オペレーティング環境であると同時にプログラミング言語でもあります。 このシステムの最大の強みの 1 つは、再利用可能なプログラムを MATLAB で作成できることです。 ユーザーは特殊な関数やプログラムを自分で作成でき、それらは M ファイルの形式でコンパイルされます。 そのため、MATLAB 製品ファミリーの一部であるアプリケーション ソフトウェア パッケージである MATLAB Application Toolbox を使用すると、世界の最新の成果のレベルに達することができます。

MATLAB 6.1 システムの動作環境。 MATLAB 6.1 システムの動作環境は、コマンド ライン、M ファイル エディター、外部システム Microsoft Word、Excel などを介したユーザーとの対話を通じて、このシステムと外部の通信をサポートする一連のインターフェイスです。

MATLAB プログラムを起動すると、コンピューターのディスプレイにメイン ウィンドウが表示されます。 メニュー, ツール定規ボタン付きと ウィンドウのクライアント側招待状のサイン付き。 このウィンドウは通常、 コマンドウィンドウ MATLAB システム (図 1)。

メニュー ファイル(図 2) は通常の機能を組み合わせたものです。 編集コンテンツ変更の責任者 コマンド (元に戻す、やり直し、切り取り、コピー、貼り付け、すべて選択、削除など) および一部の MATLAB ウィンドウをクリアするためのコマンド。 メニュー ビュー– デスクトップのデザインについて。 Web メニュー – インターネットから Web ページを起動します。 メニュー – M ファイル エディタ/デバッガと連携します (すべての M ファイルを閉じ、そのうちの 1 つを最新のファイルにします)。 メニュー ヘルプ– リファレンスドキュメントとデモで動作します。


このオプションは特別な考慮に値します 環境設定... (特性の選択)。これを選択すると、左側にオブジェクトのツリー (図 3) を含むウィンドウが開き、右側にそれらの可能な特性が表示されます。

ダッシュボード MATLAB システムのコマンド ウィンドウを使用すると、M ファイルの操作に簡単にアクセスできます。新しい M ファイルの作成。 既存の M ファイルを開きます。 フラグメントを削除する。 フラグメントをコピーする。 フラグメントを挿入する。 完了した操作のみを復元するなど。

クライアント側 MATLAB コマンド ウィンドウでは、プロンプトの後に、さまざまな数値、変数名、および演算記号を入力でき、これらを組み合わせて式を構成します。 Enter キーを押すと、MATLAB は式を評価するか、評価されない場合は式を繰り返します。 「;」という記号はありますが、 行末の は結果の出力 (エコー出力) を抑制します。

したがって、MATLAB コマンド ウィンドウのクライアント部分で、ユーザーは個々の計算またはプログラム全体を形成するコマンドをすぐに作成できます。

そこで、MATLAB コマンド ウィンドウの構造部分を分析しました。 ただし、それら以外にも、作業時に役立つ MATLAB 要素がいくつかあります。

チーム- コマンド ウィンドウに以前に入力したコマンドを含むウィンドウ (「コマンド履歴」)。

ワークスペースシステム変数が配置される MATLAB メモリの領域です。 この領域の内容は、次のコマンドを使用してコマンドラインから表示できます。 誰が(変数名のみを表示) および だれの(配列のサイズと変数の型に関する情報を表示)、または同じ名前の別のウィンドウに表示されます。 ここでは次の操作を実行できます: データ ファイルの読み込み、ワークスペースの保存 (コマンドを使用すると、ワークスペースの内容を開いてバイナリ MAT ファイルに保存できます)、選択した変数の削除。 選択した変数を開きます (値を変更できます)。 さらに、[編集] メニューでは、コマンド ウィンドウとコマンド履歴、およびワークスペースの両方をクリアできます (またはコマンド ウィンドウでコマンドを実行します)。 クリア).

ワークスペースを保存して起動するには、load コマンドと save コマンドを使用できます。

例。

保存先: matlab.mat

>> my.mat を保存

>> my.matをロードする

>> my2を保存してください

>>my2をロード

現在のカタログ– MATLAB カタログの一種の「ガイド」であるウィンドウ。

エディターを起動する– MATLAB およびそれにインストールされているその他のソフトウェアの構造要素のツリーを表示するウィンドウ。マウスを左ダブルクリックすると起動できます。 たとえば、このウィンドウは図 9 のようになります。

M ファイルエディタ/デバッガ– MATLAB の最も重要な構造部分の 1 つ。これは、メイン メニューまたはツールバーで適切なオプションを選択することによって開くことができ、編集または編集コマンドを使用してコマンド ラインから呼び出すこともできます。<имя М-файла>M ファイルを作成および編集できます。

エディター/デバッガーは次の操作をサポートします。 新しい M ファイルの作成。 既存の M ファイルを開きます。 M ファイルをディスクに保存します。 フラグメントを削除する。 フラグメントをコピーする。 フラグメントを挿入する。 ヘルプ; コントロールポイントを設定/削除します。 実行を継続するなど。

GUIDE は、完全なアプリケーションが作成されるグラフィカル ユーザー インターフェイスです。

インタラクティブなワークセッション。 M ファイル。 対話モードは、キーボードからコマンドや式を入力するためのユーザー モードです。その実行により、MATLAB パッケージの組み込みグラフィカル ツールを使用して簡単かつ迅速に視覚化できる必要な数値結果が生成されます。 ただし、このモードを使用して特定のプログラムを作成および保存することはできません。 したがって、MATLAB の作成者は、対話モードが実装されるコマンド ウィンドウに加えて、MATLAB 言語コードを含む特別なファイルを識別し、それらを M ファイル (*.m) と呼びました。 M ファイルを作成するには、テキスト エディタ (M ファイル エディタ/デバッガ) を使用します。

M ファイルエディタで作業します。多数のコマンドを入力し、頻繁に変更する必要がある場合、MatLab コマンド ラインからの作業が困難になります。 コマンドを実行する最も便利な方法は、 M-コマンドを入力し、それらを一度にまたは部分的に実行し、ファイルに保存して後で使用できるファイル。 一緒に働くには M- エディタはファイルを対象としています M-ファイル。 エディターを使用すると、独自の関数を作成し、コマンド ラインからなどから呼び出すことができます。

MatLab メイン ウィンドウの [ファイル] メニューを展開し、[新規] 項目で [M-file] サブ項目を選択します。 新しいファイルがエディタ ウィンドウに開きます M-ファイル(図10)。 算術平均を計算するプログラムをファイルに書いてみましょう

変数 a と b を追加し、fun1.m という名前で保存します。 表に示されている問題を解決する方法を比較してください。

高等数学を扱う人は、時としてどのような数学的な「怪物」に対処しなければならないかをよく知っています。 たとえば、巨大な三重積分の計算には、非常に多くの時間、精神的エネルギー、そして回復しない神経細胞を費やすことがあります。 もちろん、積分に挑戦して受けるのはとても面白いです。 しかし、代わりに積分があなたを連れて行くと脅したらどうでしょうか? それともさらに悪いことに、三次三項式が制御不能になって暴走してしまったのでしょうか? 敵にそんなことは望まないだろう。


以前は、すべてをあきらめて散歩に行くか、積分と数時間の戦いに入るかの 2 つの選択肢しかありませんでした。 そうですね、何時間もかかった人もいれば、何分もかかった人もいます。誰がどのように勉強したのか。 しかし、それは問題ではありません。 20 世紀の容赦ない進歩は、私たちに 3 番目の方法を提供します。つまり、最も複雑な積分を「迅速に」実行できるようになります。 同じことが、あらゆる種類の方程式を解くこと、三次双曲面の形式で関数のグラフをプロットすることなどにも当てはまります。

このような異常ではあるが定期的に生徒の間で発生する状況に対して、強力な数学的武器があります。 まだ知らない人のために、MATLAB ソフトウェア パッケージを紹介します。

Matlab は方程式を解き、近似し、関数のグラフを作成します。 これが何を意味するか分かりますか、友達?

これは、これが現在利用可能な最も強力なデータ処理パッケージの 1 つであることを意味します。 名前の略は、 マトリックス研究室。 マトリックス研究所ロシア語なら . このプログラムの機能は、数学のほぼすべての分野をカバーします。 したがって、Matlab を使用すると、次のことが可能になります。

  • 行列に対してあらゆる種類の演算を実行し、一次方程式を解き、ベクトルを操作します。
  • 任意の次数の多項式の根を計算し、多項式で演算を実行し、曲線を微分、外挿および補間し、任意の関数のグラフを構築します。
  • デジタルフィルタリング、統計回帰を使用してデータの統計分析を実行します。
  • 微分方程式を解きます。 偏導関数では、線形、非線形、境界条件があっても問題ありません。Matlab はすべてを解決します。
  • 整数の算術演算を実行します。

これらすべてに加えて、MATLAB の機能を使用すると、3 次元グラフの構築やアニメーション ビデオの作成など、データを視覚化できます。

もちろん、Matlab についての説明は完全ではありません。 メーカーが提供する機能に加えて、愛好家や他の企業によって単純に作成された Matlab ツールが多数あります。

プログラミング言語としての MATLAB


プログラムを操作するときに直接使用されるプログラミング言語でもあります。 詳細には立ち入りませんが、MATLAB で作成されたプログラムには関数とスクリプトの 2 種類があるということだけは言っておきます。


プログラムの主な作業ファイルは M ファイルです。 これは無限のテキスト ファイルであり、計算が直接プログラムされています。 ちなみに、この言葉を怖がらないでください。MATLAB で作業するために、プロのプログラマーである必要はありません。

M ファイルは次のように分割されます。

  • Mシナリオ。 M スクリプトは最も単純なタイプの M ファイルであり、入力引数も出力引数もありません。 このファイルは、繰り返しの計算を自動化するために使用されます。
  • M 機能。 M 関数は、入力引数と出力引数を受け入れる M ファイルです。

MATLAB でどのように作業が行われるかを明確に示すために、以下に Matlab で関数を作成する例を示します。 この関数はベクトルの平均値を計算します。
f 関数 y = 平均(x)
% AVERAGE ベクトル要素の平均値。
% AVERAGE(X)、X はベクトルです。 ベクトルの要素の平均を計算します。
% 入力引数がベクトルでない場合、エラーが生成されます。
= サイズ(x);
if (~((m == 1) | (n == 1)) | (m == 1 & n == 1))
error("入力配列はベクトルである必要があります')
終わり
y = 合計(x)/長さ(x); % 実際の計算

関数定義行は、ファイルが M 関数であることを MATLAB に伝え、入力引数のリストも指定します。 したがって、平均関数の定義行は次のようになります。
関数 y = 平均(x)
どこ:

  1. function - M 関数を定義するキーワード。
  2. y - 出力引数。
  3. 平均 - 関数名;
  4. x は入力引数です。

したがって、MATLAB で関数を作成するには、MATLAB システムのすべての関数に、以下のような関数定義行が含まれていることを覚えておく必要があります。

もちろん、このような強力なパッケージが必要なのは、学生の生活を楽にするためだけではありません。 現在、MATLAB は、多くの科学および工学分野の専門家の間で非常に人気があります。 一方、MATLAB は大規模な行列を処理できるため、金融アナリストにとって不可欠なツールとなり、たとえばよく知られた Excel よりも多くの問題を解決できるようになります。 これについてはレビュー記事で詳しく読むことができます。

MATLAB を使用する場合の欠点


MATLAB を使用する際の難しさは何ですか? おそらく難点が一つだけあります。 でも基本的なこと。 MATLAB の機能を完全に明らかにし、目の前で発生する問題を簡単に解決するには、まずハードワークして Matlab 自体 (ファイルの作成方法、関数の作成方法など) を理解する必要があります。 そして、これはそれほど単純ではありません。なぜなら、権力と幅広い機会には犠牲が必要だからです。

たとえそうしたいと思っても、MATLAB がそうであるとは言えません。簡単なプログラム。 それにもかかわらず、私たちは上記のすべてがその開発を開始するための十分な議論となることを望んでいます。

そして最後に。 人生のすべてがなぜそのように進み、そうでないのかがわからない場合は、Matlab に質問してください。 コマンドラインに「why」と入力するだけです。 彼は答えてくれるでしょう。 それを試してみてください!

これで Matlab の機能がわかりました。 教育の分野では、MATLAB は数値手法や線形代数の指導によく使用されます。 多くの学生は、研究室での実験結果を処理する際に、これなしではいられないでしょう。 MATLAB の操作の基本を迅速かつ効率的に習得するには、いつでもご質問にお答えできるよう、いつでもお問い合わせください。