NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

行列にベクトル信号を掛けたときに、時間軸を変化させない方法

行列にベクトル信号(信号を結合したもの)を掛けると、時間が0,0.01,0.02,...であったものが、0,1,2,...となります。
時間を0,0.01,0.02,...として引き続き利用したいのですが、どうしたらいいのでしょうか。
0 件の賞賛
メッセージ1/5
3,805件の閲覧回数
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の宮本と申します。

お問い合わせ有難うございます。

行列にベクトル信号を掛けると、時間値が変更してしまうとあるのですが、具体的にどの様な値を掛け合わせているのでしょうか。当方でもこの問題を再現してみたいと思いますので、詳細を頂ければと思います。また、行列とベクトルを掛け合わせている部分のプログラム(行列とベクトルの値をデフォルトに設定して)を拝見させていただくことは可能でしょうか。

お手数ではありますが、よろしくお願い致します。


--------------------------------------------------------------------------
日本ナショナルインスツルメンツ株式会社 技術部 宮本 素臣
www.ni.com/jp
Email: http://www.ni.com/jp/support/ TEL: 0120-527196
弊社のサポートに関する情報は以下のサイトをご覧ください。
http://www.ni.com/support/ja/
--------------------------------------------------------------------------
0 件の賞賛
メッセージ2/5
3,780件の閲覧回数
返答、ありがとうございます。

プログラムをJPEGにして、添付しています。

MATLAB Scriptで単位行列E(2*2)を作成し、
sin波とcos波を用いて、2行のベクトルx(t)を作り、掛け合わせています。
E*x(t)=x(t)

A*x の波形チャートが x のものと同じになると思うのですが、
どのように改善したらいいのでしょうか。

よろしくお願い致します。
0 件の賞賛
メッセージ3/5
3,771件の閲覧回数
平素よりNI製品をご利用頂きまして誠に有難うございます。
日本ナショナルインスツルメンツ技術部の宮本と申します。

ご返信有難うございます。

添付していただいた画像ファイルを拝見いたしました。結論から申し上げますと、「ダイナミックデータから変換」関数を使用しダイナミックデータを配列に変更しているために時間情報が失われております。したがって「A*x」グラフで表されているデータのx軸は、時間値ではなく配列の指標([0, 1, 2,...])となっております。この問題を回避するためには、「波形生成」関数を使用しデータに時間情報を再度追加する必要がございます。また、ループ内で行列とベクトルを掛け合わせているのですが、「ダイナミックデータから変換」関数の設定を変更し、行列と行列を掛け合わせることでループを使用せずにご希望の結果が得られると考えております。

下記が当方の考える問題回避の手順です。

1)「信号シュミレーション」からの出力値は、時間値と信号の振幅値を含んでおります。「サンプルレート」の設定により実際の時間値が決められ、「サンプル数」の設定によりデータ自体の長さ (数)が決められます。したがって「ダイナミックデータから変換」関数(image1-1参照)を使用する際の設定を「2Dスカラ配列-列がチャンネル」 (image2参照)に変更することで、サイン波とコサイン波の振幅値を下記のような行列(これをBとする)で表すことが可能となります。

B = [sin(t0), sin(t1), sin(t2), sin(t3), sin(t4),..., sin(tN)
cos(t0), cos(t1), cos(t2), cos(t3), cos(t4),..., cos(tN)]

2)A = [1, 0; 0, 1]とした場合、AB=Bとなります。「AxB」関数からの出力値なのですが、前述どおり時間情報を含んでおりません。したがってこの出力値をグラフで表示した場合、x軸の値は、配列の指標となります(image1-3、波形グラフ2参照)。

3)「ダイナミックデータから変換」関数を使用した際に時間情報が失われてしまったのですが、「信号シュミレーション」関数内の「サンプルレート」の設定からこの情報を再現することが可能です。例えば「サンプルレート」を1000Hzと設定した場合、時間値は、0.001秒刻みとなります。「波形生成」関数を使用する際にこの値をdtとして使用し (image1-2参照)、「AxB」関数からの出力値、行1=B(1,: )と行2=B(2,: )、をそれぞれYとして使用することでご希望の波形を作成することが可能となります(image1-3、波形グラフ3参照)。

以上、よろしくお願い致します。
すべてをダウンロード
0 件の賞賛
メッセージ4/5
3,753件の閲覧回数
日本ナショナルインスツルメンツ
技術部 宮本様

ご返信、ありがとうございました。問題を解決することができました。
0 件の賞賛
メッセージ5/5
3,701件の閲覧回数