拡張性はJMPの特徴の1つです。に JMP 11 JMPをMATLABと統合することができます。JMP Scripting Language(JSL)から、JMPからMATLABにデータを送信し、MATLAB関数を実行し、MATLABからJMPに結果を返して、さらなる分析と視覚化を行うことができます。
MathWorksのソフトウェアソリューションであるMATLABは、数値計算、データ解析、可視化、およびカスタムエンジニアリングモデルとアプリケーションの構築のためのマトリックスプログラミング言語および対話型プログラミング環境です。これにはツールボックスと呼ばれる豊富なアドオンモジュールが含まれています。これにより、MATLABユーザーは必要に応じて特殊なモデリングや設計作業を行うための関数にアクセスできます。
JMPのMATLABインターフェイスは、一連の関数を使用してJSLを介してMATLABにアクセスするためのものです。基本的な実行モデルは、最初にMATLAB接続を初期化し、必要なMATLAB操作を実行してから、MATLAB接続を終了することです。使い方のパラダイムは、JMPのRインタフェースとよく似ています。
この記事では、JMP 11インストールでインターフェースを稼働させる方法を簡単に強調し、インターフェースの使用方法の基本的な例をいくつか紹介しました。インターフェースの詳細をもっと深く掘り下げるために、私は白書ジョージア工科大学の航空宇宙システム設計研究所の研究エンジニアであるジョン・サーモン博士と共著しました。
まず最初に、インストールの指示を邪魔にならないようにしましょう。詳細な指示は私達のオンラインで利用可能です助けてしかし、ここにクイックスタートガイドがあります。
MATLABはJMPと同じコンピューターにインストールする必要があり、JMPはMATLABのコピーと一緒に配布されません。JMPは32ビットと64ビットの両方のWindowsアプリケーションとしてサポートされているため、対応する32ビットまたは64ビットバージョンのMATLABをインストールする必要があります。JMPはJSLスクリプトがアクセスを要求するまでMATLABのロードを遅らせます。JMPがMATLABをロードする必要がある場合、JMPは現在の検索パスに基づいて配置されます。 PathVar変数 これは、MATLABインターフェイスのプラットフォーム設定を使用して設定する必要があります。MATLABROOTをコンピュータにインストールされているMATLABのパスに設定すると、JMPは必ずMATLABを検索する場所を認識します(下図を参照)。
パスがプラットフォームの設定で設定された後、MATLAB Init()を実行してMATLAB接続が機能していることを確認するためのクイックチェックを実行できます。関数。接続が成功した場合、この関数はログに0を返します。操作が成功しなかった場合は、エラーメッセージが表示されます。
それでは、インターフェースがどのように機能するかの例を正しく見てみましょう。この例は、インターフェイスワークフローの各段階を示しているため、より複雑なスクリプトの優れたプロトタイプとして機能します。最初のステップは、MATLAB Init()を使用してMATLAB接続を初期化することです。コール。それから、MATLAB Submit()を使います。MATLABでいくつかのMATLABコードを実行するための関数。この例では、入力パラメータ3で「magic」関数を実行し、その結果をという名前の変数に格納しています。メートル。 をもたらすためにメートル JMPの結果をさらに使用するためにJMP変数空間に行列化するには、MATLAB Get()を実行します。に格納されたデータを受け取る関数メートルそしてそれをJMP変数に割り当てます。 magicMat 。小さなプログラムの結果を見るために、 magicMat 次の図に示すように、ログに記録してデータをJMPデータテーブルに入れます。そして最後に、MATLABセッションをMATLAB Term()で終了します。コマンド。

ここでの利点は、MATLABプログラムからのデータがJMPデータテーブルに格納され、それ以上のMATLABコーディングを行わなくても視覚化、モデル化、または探索できることです。また、MATLABモデル出力を調査するためのJMPの対話性も得られ、データの視覚化(例えば、Graph Builder、Control Chart Builder、Distribution)、データ分析(Fit Model、Partition、Screeningなど)にJMPツールを使用できます。追加のデータの整理と要約( テーブルメニュー、表形式など) 
基本的なことをしましたので、もう少し楽しくしましょう。仕事以外の趣味の1つは、スピーカーの設計と建築です。現在進行中の私の現在のデザインの写真です。私は、これらのスピーカーの設計と調整に私がどのように私がMATLABとJMPを使用することができるかを見るでしょう。私が昨年私のセットアップに追加した素晴らしいことの1つはMiniDSPです。MiniDSPはスピーカーとクロスオーバーのラピッドプロトタイピングをはるかに簡単にした驚くべき小さな装置です、そしてそれはまた私にパッシブクロスオーバーコンポーネントを購入しなければならない煩わしさと費用を節約しました。

MiniDSPを使用すると、タイムアライメント、ローパスとハイパスのクロスオーバーフィルター、部屋の補正など、さまざまなことを実行できます。スピーカーを自分の部屋で最高のサウンドにするために必要な作業をどのようにして知ることができますか?私はとして知られているものを作成しますインパルス応答 (IR)スピーカーを通して掃引正弦波測定信号を再生し、次にマイクで出力を録音することによって。測定した湿った信号から乾いた信号を差し引くと、IRが生成されます。残っているのは、私の部屋で音がどのように減衰するかを記述するデータセットです。しかし、私が本当に知る必要があるのは、データが時間領域にあるということではなく、私のスピーカーの周波数応答です。幸いなことに、これは高速フーリエ変換(FFT)アルゴリズムを使用することにより、時間領域データが与えられたとしても分析が容易です。
私があなたに見せようとしている例は私が私のキャビネットで造られたモデルに私のバスレフポートの回転がどれほど近いかを確かめようとしていたときに私がした測定です。このために、私は私の左のスピーカーの両方のポート間のスピーカーの近くにマイクを置きました。ポートからの直接音は反射音よりも振幅がはるかに大きいので、部屋の反射を心配する必要はありません。スピーカーからのブロードバンド応答を見るには、別の方法(スピーカーを外に出して台座の上に置き、それから反射を取り除く)を使用する必要があります。少し暖かい)。
それで、これが私の測定の時間領域データです:

私が本当にやりたいことは、応答をプロットして質問に答えることができるように、これを周波数領域に変換することです。ポートは本来あるべき場所で共振していますか(約55 Hz)?
この解析では、JMPからデータを取得し、それをMATLABに送信し、FFTを実行するために書いた関数を実行し、得られたベクトルを適切にラベル付けされた周波数ビンを使って新しいデータテーブルに返します。私のMATLAB関数は私のサンプルレートが何であるか)。
将来この分析を自動化して新しい測定を行うために、この分析を新しいJMPアプリケーションに変換しました。これをアドインとしてパッケージ化してJMPメニューに追加することができます。振幅データを含む列を要求する簡単なダイアログです。

OKを押すと、データをMATLABにラウンドトリップし、FFTを実行し、解析結果をデータテーブルに返すJSLを実行します。MATLABスクリプトを実行するために実際に必要なコードは非常に単純です。26行目で、変数を送信しますイヴェックこれは、MATLAB変数空間へのアプリケーションでユーザーが選択した応答の役割に対応します。次に、FFT関数を実行するために必要なMATLABコードを送信します。私の場合、すべてのIRが44.1 kHzでサンプリングされていることがわかっているので、それを私のcalcFFT関数の入力リストにハードコードしました。サンプルレートが変動する場合は、アプリケーションにテキスト入力フィールドを追加してから、その選択を関数呼び出しに渡すことができます。

私の関数は、私が興味を持っている2つのベクトル、fftsignalとfreqArrayを返します。MATLAB Get()を使って、これら2つの変数をJMP変数空間に引き込むことができます。機能し、結果からテーブルを作成します。
結果が得られたら、Graph Builderを使用して周波数応答グラフを生成できます。

私はポートのチューニングの振る舞い(グラフ上のピークとして表示されます)を見ることができるように20 Hz - 400 Hzからの周波数応答だけに焦点を合わせました。それは私のモデルに基づいて予想したより少し高いので、私は私の部屋で必要な周波数応答を持つためにMiniDSPの低周波数チャンネルに少し低音ブーストを追加する必要があるかもしれません。
JMPの機能を拡張するためにJMPとMATLABを一緒に使用できる場所の一例を示しました。このホワイトペーパーでは、JMPを使用してカスタムデザイナーを使用して実験計画を立て、MATLABでシミュレーション実験を実行し、その結果を分析、因子プロファイリング、および変数の重要性の評価のためにJMPに返すなど、いくつかの例を示します。
JMP 11でMATLABへのJMPインタフェースを使用しましたか?あなたが持っているならば、私はあなたの話を聞きたいです!
ジェフパーキンソン書きました:
ここでコメントで解決するのは難しいかもしれません。あなたはsupport@jmp.comで私達の技術サポート部にメールすることができ、彼らはあなたが何が悪いのかを理解するのを助けることができます。あるいは、あなたはあなたの質問をディスカッションのセクション JMPユーザーコミュニティ 。
サムキム書きました:
残念ながら、私のログはMATLAB init();を実行したときに "0"ではなく "1"を返しています。何が悪かったのか教えてください。
エマニュエル書きました:
すみません、私はただファイルをダウンロードします、それは完全なパックがあるようです、ありがとう
エマニュエル書きました:
スクリプトにはいくつかのエラーがあります、私もビデオの1つを見ていました、そして、いくつかのタイプミスがあります。
最初の例では、ログにColum nameエラーがあります。だから私はその部分を排除する必要があります:
MATLAB Init();
MATLAB Submit( "m = magic(3)");
magicMat = MATLAB get(m);
show(magicMat);
dt =テーブルとして(magicMAt);
MATLAB Term();
それでうまくいく
FFTは私が興味を持っている部分です、それはMATLAB Init()で始まります。
現在ログにエラーがあります。
"タイプ 'double'の入力引数に対する未定義の関数 'calcFFT_FR12'。
25,000のデータサンプルも送ってもらえますか。
だから私はそれを確認することができます
前もって感謝します
ダニエル・ヴァレンテ書きました:
こんにちはエマニュエル -
あなたはできるダウンロードホワイトペーパーのサンプルスクリプト「ファイル交換」の「MATLABとのJMP拡張性の相乗効果」
MATLAB関数のディレクトリを設定するにはどうすればよいですか? 呼び出しているMATLAB関数をJMPスクリプトと同じフォルダーに配置しましたが、JMPは関数を認識しないと言っています。 Danielが提供したMATLABサンプルフォルダーには、このMATLAB Submit( "cd'REPLACE '");があります。 JMPがMATLAB関数を呼び出すことができるように、MATLABがパス/特定のディレクトリをMATLABに送信できるようにフォーマットするにはどうすればよいですか?
ありがとう、
ネイサン
また、ディレクトリを毎回変更する代わりに、すべてのMATLAB関数を呼び出すことができるようにJMPスクリプトにパスを追加するにはどうすればよいですか?
入力したのがおかしい
MATLAB送信( "cd '\\ las-cifs01 \ myfilename"); // cdREPLACE行の代わりに
// MATLAB送信( "cd'REPLACE '");
cd '\\ las-cifs01 \ myfilename \ REPLACEでフォルダを探します
REPLACEフォルダーに移動することを指定しませんでした