انجمن سایت کلیدستان


رتبه موضوع:
  • 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
quantization

quantization

#6
کدهای متلب تصحیح شده، به صورت زیر می باشند :

کد:
%quantization a sound signal
function []=demo_quant(inname,outname,N);
if nargin <3
    disp('usage:sample_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

x_size=size(x);
xq=x;
for nn=1:x_size(1)
    for mm=1:x_size(2)
        xq(nn,mm)=sign(x(nn,mm))*(floor((abs(x(nn,mm))+Q(mm)/2)/Q(mm))*Q(mm));
    end
end

%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

که در آن، خط زیر :

کد:
xq=sign(x).*(floor((abs(x)+Q/2)/Q)*Q);

را به کدهای زیر تبدیل کرده ایم (برای رفع مشکل) :

کد:
x_size=size(x);
xq=x;
for nn=1:x_size(1)
    for mm=1:x_size(2)
        xq(nn,mm)=sign(x(nn,mm))*(floor((abs(x(nn,mm))+Q(mm)/2)/Q(mm))*Q(mm));
    end
end

مشکل هم از این موضوع ناشی میشد که Q دارای دو مقدار می باشد (به دلیل اینکه x دارای دو ستون است). به هر حال با کدهای بالا دیگر این مشکل ایجاد نمی شود.

برنامه رو اجرا کردم و دیگر پیام خطا نمایش داده نشد.
دقت کنید که در میان کدها، دستور pause نوشته شده و باید بعد از شنیدن فایل صوتی اول، کلید enter از کیبورد را بزنید تا ادامه برنامه اجرا گردد.

موفق باشید. Smile
bookbook 
لطفا برای درج کد، از دکمه مخصوص درج کد در ادیتور انجمن استفاده کنید.
در مورد برنامه نویسی، مدیران تنها راهنمایی می کنند و نوشتن برنامه نهایی، به عهده کاربران می باشد (اینجا محلی برای یادگیری است، نه سفارش کدنویسی).
کاربران باید ابتدا خود به خطایابی برنامه بپردازند، نه اینکه به محض دیدن خطا، کدها را در انجمن، copy و paste کرده و از مدیران انتظار بررسی داشته باشند.
پاسخ


پیام‌های این موضوع
quantization - توسط s24ranjbar - ۱۳۹۲/۰۴/۲۹, ۰۷:۱۶ ب.ظ
RE: quantization - توسط admin - ۱۳۹۲/۰۴/۲۹, ۱۱:۳۱ ب.ظ
RE: quantization - توسط s24ranjbar - ۱۳۹۲/۰۴/۳۰, ۰۲:۱۶ ق.ظ
RE: quantization - توسط admin - ۱۳۹۲/۰۴/۳۰, ۰۴:۲۷ ق.ظ
RE: quantization - توسط s24ranjbar - ۱۳۹۲/۰۴/۳۱, ۱۰:۱۷ ق.ظ
RE: quantization - توسط admin - ۱۳۹۲/۰۴/۳۱, ۱۲:۴۳ ب.ظ
RE: quantization - توسط s24ranjbar - ۱۳۹۲/۰۴/۳۱, ۰۱:۴۳ ب.ظ
RE: quantization - توسط s24ranjbar - ۱۳۹۲/۰۴/۳۱, ۰۱:۴۹ ب.ظ
RE: quantization - توسط admin - ۱۳۹۲/۰۴/۳۱, ۰۴:۳۴ ب.ظ
RE: quantization - توسط s24ranjbar - ۱۳۹۲/۰۴/۳۱, ۰۶:۵۳ ب.ظ
RE: quantization - توسط s24ranjbar - ۱۳۹۲/۰۴/۳۱, ۰۸:۱۲ ب.ظ
RE: quantization - توسط admin - ۱۳۹۲/۰۴/۳۱, ۰۹:۵۴ ب.ظ
RE: quantization - توسط s24ranjbar - ۱۳۹۲/۰۵/۰۱, ۰۱:۳۸ ق.ظ

پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان