これは、信号を生成し、量子化し、エンコードし、復調する私のコードです。
%Quantization
n=8;
L=2^n;
vmax=8;
vmin=-vmax;
del=(vmax-vmin)/L;
part=vmin:del:vmax; % level are between vmin and vmax with difference of del
code=vmin-(del/2):del:vmax+(del/2); % Contaion Quantized valuses
[ind,q]=quantiz(s,part,code); % Quantization process
% Encoding Process
figure;
code=de2bi(ind,'left-msb'); % Cnvert the decimal to binary
k=1;
l1=length(ind);
l2=length(q);
for i=1:l1
for j=1:n
coded(k)=code(i,j); % convert code matrix to a coded row vector
j=j+1;
k=k+1;
end
i=i+1;
end
それを実行すると (既に pkg は quantiz 関数の通信をロードしました)、この行のエラーが発生します。
error: ones: invalid data type specified
error: called from
de2bi at line 79 column 5
PCM1 at line 33 column 6
(PCM1 はファイル名です) de2bi 関数から「left-msb」パラメーターを削除しようとしましたが、コードはエラーなしで実行されますが、最終出力は正しくないため、「left-msb」が必要です。私の知る限り、このコードは MATLAB で正常に動作しますが、試すための MATLAB キーがありません。
このエラーが何を意味し、どのように修正できるかについてのアイデアはありますか? 配列 ind はすべて正の値を持つ double 型であるため、関数が機能しない理由がわかりません。
編集: コードは Octave で実行されました。不要なコードを削除しました。