私は他の多くの人が以前に抱えていた問題を抱えているので、次の質問をする前にいくつかの議論と参考文献を読みました:
Simulink に Matlab 関数ブロックがあり、これを変調器にしたいと考えています。入力としてデータのフレームを取得し、フレームを[nx1]
返す必要があり[lx1]
ます。l=n
l = n/K
K
n
ただし、(非常に単純化された)コードの抜粋
function ak = Modulator(dataFrame,dataType)
coder.varsize('ak',length(dataFrame));
M = 4; % this is for simplicity in this extract
if dataType == 1 %input is a binary stream, bit mapping required
ak = zeros(round(length(dataFrame)/log2(M)),1);
else % input data is a stream of integer
ak = zeros(length(dataFrame),1);
end
end
コンパイルされないため
"Data 'ak' is inferred as a variable size matrix,
while its specified type is something else."
ここでline 2
、可変サイズの行列であることを指定し、if/else
コンストラクタを使用して初期化しました。
コンパイラを満足させるために、Data and Ports Manager での"Variable number of columns"
チェックボックスをオンにすることができますが、これは新しいエラーになります。ak
フィルター。