finverse()を用いたことによるベクトル化推奨、配列変換不可エラー
古いコメントを表示
既知の二次遅れ系の伝達関数を有するシステムの逆関数を求め、目標信号(のこぎり波)に対してフィードフォワード制御信号を導出するプログラムを作成しております。
T=0.005;
Tr=0.001;
syms t;
SV=2*16*triangularPulse(0,Tr,T,t)-16;
aFreq=3330;
K=50;
ext=0.015
sys=tf(K*aFreq^2,[1,2*ext*aFreq,aFreq^2]);
[num,den]=tfdata(sys);
syms s;
sys_sym=poly2sym(cell2mat(num),s)/poly2sym(cell2mat(den),s);
MV=ilaplace(laplace(SV)*finverse(sys_sym));
fplot(SV,[0 T]);
hold on
fplot(MV,[0 T])
上記を動作したところ、おそらくfinverse起因で下記のエラーが発生しました。ベクトル化するよう示唆されましたが、ベクトル化して離散化するとラプラス変換・逆ラプラス変換不可能(連続データのみ受け付けるため)です。どのような対処が望ましいでしょうか。ご助力頂けますようよろしくお願いいたします。
警告: 関数が配列入力で予期せぬ動作をします。パフォーマンスを向上させるために、入力引数と同じサイズと形状をもつ出力を返すように関数を適切にベクトル化してください。
警告: FunctionLine の更新中にエラーが発生しました。
FunctionLine 更新での関数の評価中に、次のエラーが報告されました: 式を double の配列に変換できません。
3 件のコメント
Kazuya
2019 年 1 月 29 日
もし可能であれば、記載コードがそのまま実行・検証できるように、dFreqなどの定義も含めていただけませんか? 警告が手元で再現できると、対応策も考えやすいかなと思いまして。
Daisuke Kusakari
2019 年 1 月 30 日
Kazuya
2019 年 1 月 30 日
ありがとうございます。
採用された回答
その他の回答 (0 件)
カテゴリ
ヘルプ センター および File Exchange で 計算幾何学 についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!