这是我的代码,它生成一个信号,量化它,编码它,然后解调它。
%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
当我运行它时(已经为 quantiz 函数进行了 pkg load 通信),我得到了这行错误。
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 中运行。删除了不必要的代码。