finverse()を用いたことによるベクトル化推奨、配列変換不可エラー
Afficher commentaires plus anciens
既知の二次遅れ系の伝達関数を有するシステムの逆関数を求め、目標信号(のこぎり波)に対してフィードフォワード制御信号を導出するプログラムを作成しております。
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 commentaires
Kazuya
le 29 Jan 2019
もし可能であれば、記載コードがそのまま実行・検証できるように、dFreqなどの定義も含めていただけませんか? 警告が手元で再現できると、対応策も考えやすいかなと思いまして。
Daisuke Kusakari
le 30 Jan 2019
Kazuya
le 30 Jan 2019
ありがとうございます。
Réponse acceptée
Plus de réponses (0)
Catégories
En savoir plus sur 計算幾何学 dans Centre d'aide et File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!