2016-06-23 145 views
-2

私はSimulinkに変調器になりたいMATLAB関数ブロックを持っています。 [40000x1]の入力を受け取り、[51x1]の出力を返す必要があります。この関数は、入力信号から折り返し点を見つける働きをします。 コンパイル時には常に問題があります。simulink-matlab関数可変サイズ行列

簡略化されたコードは以下を示している

「データ 『EXT』モデルエクスプローラでその特性は、そのサイズを指定しながら、継承として、可変サイズ行列として推測又は固定されている」

function ext= sig2ext(sig) 

sig=sig(:); 

w1=diff(sig); 

w=logical([1;(w1(1:end-1).*w1(2:end))<=0;1]); 

ext=sig(w); 
+0

'w'は常に正確に51個の' true'要素を持つことをどのように知っていますか? –

+0

ごめんなさい。それは必ずしも51の真の要素ではなく、単なる例であるが、出力数は常に入力数よりも小さい。 –

答えて

0

あなたは、信号、またはあなたのケースでは、出力信号が可変サイズであることを宣言する必要があります。これを行う方法について説明している豊富なドキュメントがあります:Variable Size Data

まず、他のドキュメントページに記載されているすべての手順を説明しているFilter a Variable Size Signalを見ることをお勧めします。

+0

お返事ありがとうございます。出力ブロックを可変サイズにチェックしますが、次のエラーが表示されます。 Simulinkは出力ポートから可変サイズモードを伝播できません。可変サイズモードは、「無題/ MATLAB関数/ SF関数」から始まります。次のシナリオのいずれかの場合、「タイトルなし/ファイルへ」の構成を調べます。1)ブロックが可変サイズの信号をサポートしていない。 2)ブロックは可変サイズの信号をサポートするが、それらのために構成する必要がある。 –

+0

MATLAB Functionブロックは可変サイズの信号をサポートしているため、ブロックを正しく構成していません。 –