コアポイント
MATLABはマトリックス形式のデータを理解していますが、WebアプリケーションはJSONまたはXML形式でデータを好みます。
このWebアプリケーションには、MATLABからブラウザへのリアルタイムデータ転送が含まれます。簡単にするために、現在の時刻をMATLABから転送し、ブラウザに表示します。 MATLABでJSONファイルをエンコード/デコードするためのツールボックスであるJSonLabを使用します。 Webアプリケーションは、平均スタックを使用して作成されます。平均スタックに慣れていない場合は、継続する前に「平均スタックの初心者」を読むことをお勧めします。
jsonlabの紹介
jsonlabは、matlab言語でのJSONエンコーダー/デコーダーの無料オープンソース実装です。 MATLABデータ構造(配列、構造、セル、構造配列、およびセル配列)をJSON形式の文字列に変換するか、JSONファイルをMATLABデータにデコードするために使用できます。
loadjson()
、savejson()
、loadubjson()
、およびsaveubjson()
の4つの関数へのアクセスを提供します。最後の2つの関数は、UBJSON形式を処理するために使用されます。 loadjson()
は、JSON文字列を関連するMATLABオブジェクトに変換するために使用されます。私たちのプロジェクトでは、Matlabオブジェクト(セル、構造、または配列)をJSON文字列に変換するsavejson()
関数のみを使用します。次のように使用できます
json = savejson(rootname, obj, filename) json = savejson(rootname, obj, opt) json = savejson(rootname, obj, 'param1', value1, 'param2', value2, ...)
jsonlabのインストール
開始するには、jsonlabをダウンロードし、アーカイブを解凍し、次のコマンドを使用してMATLABのパスリストにフォルダーのパスを追加します。このパスを永続的に追加する場合は、
と入力し、jsonlabルートフォルダーを参照してリストに追加する必要があります。終了したら、[保存]をクリックする必要があります。次に、matlabでaddpath('/path/to/jsonlab');
を実行します。出力が表示された場合、JsonLabが正しくインストールされていることを意味します。 pathtool
rehash
which loadjson
matlab code
現在の時刻が必要なので、コマンドを使用します。 [年、月、日、時間、秒]の形式で現在の日付と時刻を含む6要素の日付ベクトルを返します。繰り返し時間を取得するために、
コマンドを無限のループに配置します。したがって、MATLABコマンドウィンドウでCTRL Cを使用してスクリプトの実行が終了するまで、リアルタイムデータを取得し続けます。 clock
clock
次のコードは、このアイデアを実装しています:while
プロジェクトでは、営業時間、分、秒に焦点を当てています。上記のコードで使用されている
関数は、マトリックスのすべての要素を最も近い整数に丸めます。時間データを取得するには、マトリックスの列4の値が必要なため、コマンドformat shortg; y=0; while y == 0 % c = [year month day hour minute seconds] c=clock; % 将每个值四舍五入为整数 c=fix(c); x.clock=c; % 访问c的第4列,即小时 x.hours=c(:,4); % 访问c的第5列,即分钟 x.minutes=c(:,5); % 访问c的第6列,即秒 x.seconds=c(:,6); % 将x转换为JSON并写入matlabData.json savejson('',x,'data/matlabData.json'); end
fix(c)
クロックといくつかの個別の変数をWebアプリケーションに個別に送信して、MATLABオブジェクトからJSONへの異なるデータ型の変換を表示します。クロックデータは配列に変換されますが、時間、分、秒の値は数値に変換され、後で表示されます。 c(:,4)
パラメーターは空の文字列になります。
前のコードを使用して、必要なすべてのMATLABコードを完了します。これで、スクリプトを実行すると、JSONファイルがデータフォルダーに作成され、ファイル内のデータが自動的かつ絶えず更新されることを観察できます。 JSONファイルコンテンツの例は次のとおりです
savejson()
matlabData.json
このファイルを監視し、node.jsを使用して最新のデータを読み取ります。それでは、Webアプリケーションの構築を開始しましょう。 rootname
webアプリケーション
{ "hours": 19, "minutes": 28, "seconds": 28, "clock": [2015,5,27,19,28,28] }
MATLABデータがJSONに変換され、ファイルに保存されたため、このファイルを独立して読み取り、変更を監視してデータを取得できます。この操作は、MATLABとは何の関係もありません。この記事の残りの部分では、基本的な概念の一部のみを使用していても、socket.ioと平均スタックを理解していると思います。
Webアプリケーションの作成を開始しましょう。
package.jsonファイルを作成
アプリケーションを開始するには、プロジェクトの依存関係を定義しましょう。これを行うには、次のようにpackage.json
ファイルを作成します。
json = savejson(rootname, obj, filename) json = savejson(rootname, obj, opt) json = savejson(rootname, obj, 'param1', value1, 'param2', value2, ...)
を実行して、すべての依存関係をインストールします。 NPMに慣れていない場合は、「NPM Getting Guide -Node Package Manager」を読むことをお勧めします。 npm install
サーバーサイドコード コードのこの部分には、node.js、Express、およびMongodbの使用が含まれます。サーバーによって実行される操作には、
が含まれます提供
index.html
jsonファイルのデータを監視および読み取り
server.js
Expressを使用して静的ファイルを提供します:
要求が
addpath('/path/to/jsonlab');
ディレクトリに保存されているファイルが提供されます。 /
app
ファイルへの変更を監視するには、index.html
を使用し、ファイルが変更されるたびに読み取るには、
Mongooseミドルウェアを使用してMongoDBにデータを保存します<」
はドキュメントです。 また、MongoDBサーバーが実行されていることを確認してください。そうしないと、アプリケーションがクラッシュします。 クライアントコード
ファイルの単純なコードです: ディレクティブは、アプリケーションがロードされているときに、ブラウザが元の(コンパイルされていない)AngularJSテンプレートを簡単に表示しないようにするために使用されます。 アプリケーションを実行します
を実行する必要があります。 node.jsサーバーを実行するには、プロジェクトフォルダーのルートディレクトリでコマンド で提供されます。 結論
この記事では、平均スタックを使用して、MATLABプログラムからJSON形式のデータを取得するWebアプリケーションを作成します。データはJSonLabの助けを借りて変換されます。データはsocket.ioを使用してブラウザに送信されるため、ブラウザの変更はリアルタイムで反映されます。このデモの完全なソースコードは、GitHubで入手できます。 この記事を楽しんで、コメントを読むことを楽しみにしています。 以上がMatlabと平均スタックでWebアプリを作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。fs.watch()
クライアントとの接続が確立され、データの取得を開始すると、2つのことが行われます。
fs.readFile()
format shortg;
y=0;
while y == 0
% c = [year month day hour minute seconds]
c=clock;
% 将每个值四舍五入为整数
c=fix(c);
x.clock=c;
% 访问c的第4列,即小时
x.hours=c(:,4);
% 访问c的第5列,即分钟
x.minutes=c(:,5);
% 访问c的第6列,即秒
x.seconds=c(:,6);
% 将x转换为JSON并写入matlabData.json
savejson('',x,'data/matlabData.json');
end
メソッドを使用してデータベースに保存します。このインスタンスはドキュメントと呼ばれます。次のコードでは、emit()
はjson = savejson(rootname, obj, filename)
json = savejson(rootname, obj, opt)
json = savejson(rootname, obj, 'param1', value1, 'param2', value2, ...)
try
およびcatch
を使用して、アプリケーションのクラッシュを防ぎます。使用しないと、JSON.parse
が急速な変更により予期しないユーザー入力エラーを引き起こした場合、アプリケーションがクラッシュする場合があります。これは私たちが避けたいものです! index.html
addpath('/path/to/jsonlab');
ngCloak
mongod
を実行する必要があります。 node server.js
127.0.0.1:3000