۱۳۹۲/۰۴/۲۹, ۰۷:۱۶ ب.ظ
سلام دوستان این کد واسه uniform quantizaton هست که اجرا نمیشه و رو خط قرمزش ارور میده کسی میتونه کمکم کنه؟
%quantization a sound signal
function []=demo_quant(inname,outname,N);
if nargin <3
disp('usageample_quant(inname,outname,N)');
disp('inname:input .wav file name');
disp('outname:output .wav file name');
disp('N:quantization leve, N>1');
return;
end;
%read in input signal
[x,Fs,N0]=wavread(inname);
xmin=min(x);
xmax=max(x);
Q=(xmax-xmin)/N
disp('N0,xmin,xmax,N,Q');
disp([N0,xmin,xmax,N,Q]);
%apply uniform quantization on each sample
xq=sign(x).*(floor((abs(x)+Q/2)/Q)*Q);
%compare sound quality
wavwrite(xq,Fs,N0,outname);
sound(x,Fs);
pause;
sound(xq,Fs);
%plot waveform over the entire period
t=1:length(x);
figure;plot(t,x,'r:');
hold on; plot(t,xq,'b-');
axis tight; grid on;
%plot waveform over a selected period
t=5000:5100;
figure;plot(t,x(5000:5100),'r:');
hold on; plot(t,xq(5000:5100),'b-');
axis tight; grid on;
end
%quantization a sound signal
function []=demo_quant(inname,outname,N);
if nargin <3
disp('usageample_quant(inname,outname,N)');
disp('inname:input .wav file name');
disp('outname:output .wav file name');
disp('N:quantization leve, N>1');
return;
end;
%read in input signal
[x,Fs,N0]=wavread(inname);
xmin=min(x);
xmax=max(x);
Q=(xmax-xmin)/N
disp('N0,xmin,xmax,N,Q');
disp([N0,xmin,xmax,N,Q]);
%apply uniform quantization on each sample
xq=sign(x).*(floor((abs(x)+Q/2)/Q)*Q);
%compare sound quality
wavwrite(xq,Fs,N0,outname);
sound(x,Fs);
pause;
sound(xq,Fs);
%plot waveform over the entire period
t=1:length(x);
figure;plot(t,x,'r:');
hold on; plot(t,xq,'b-');
axis tight; grid on;
%plot waveform over a selected period
t=5000:5100;
figure;plot(t,x(5000:5100),'r:');
hold on; plot(t,xq(5000:5100),'b-');
axis tight; grid on;
end