بسمه تعالی هایچندرسانهای()44-243 سیستم تمرین :1آشناییبا Aliasing ،Samplingو Quantization دانشکدهمهندسیکامپیوتر دانشگاهصنعتیشریف 62بهمن دکتر مهدی امیری مقدمه همانگونه كه در درس با مفهوم سيگنال ديجيتال آشنا شديد ،ديجيتال كردن سيگنال شامل دو مرحله نمونه برداري 1و كوانتيزه كردن 2سيگنال است .شما در اين تكليف با نمونه برداري سيگنال پيوسته در زمان و پديده aliasingو نيز كوانتيزه كردن سيگنال آشنا خواهيد شد .همچنين اثرات اين پردازش را روي سيگنالهاي صوتي بررسي خواهيد كرد. آنچه كه بايستي تحويل داده شود شامل پاسخ سواالت مطرح شده در صورت تمرينها (در قالب يك گزارش با فرمت ،PDFنمودارها و شكلهاي خروجي mفايلها و خود mفايلها مي باشد .لطفا تمامي فايل ها را به صورت يك فايل فشرده ،كه نام آن در قالب MM_HW1_LastName_StudentIDباشد كه در آن به جاي LastNameنام خانوادگي شما و به جاي StudentIDشماره دانشجويي شما قرار ميگيرد ،به آدرس ايميل درس به نشاني multimedia922@gmail.comبفرستيد .لطفا عنوان emailخود را همانند قالب فوق قرار دهيد .مهلت تحويل خروجي ها ساعت 25:32تاريخ 1522/12/14مي باشد. Sampling Quantization 1 2 -1نمونه برداری در این بخش از تمرین تمرکز ما بر روی نمونه برداری از یک سیگنال به منظور ذخیره سازی آن سیگنال و پخش آن در متلب است .یک سیگنال متناوب مانند سیگنال زیر را به عنوان پایه در نظر میگیریم: ) ( ( ) ) ( این سیگنال را در زمان ۰تا ۳ثانیه با ویژگیهای زیر در نظر بگیرید. ⁄ برای این سیگنال نرخ نمونه برداری مناسبی ( )Fsانتخاب کنید تا بدون رخ دادن پدیده Aliasingبتوان از سیگنال نمونه برداری کرد. -1-1ورود به متلب پس از در نظر گرفتن مالحضات تئوریک نمونه برداری در قسمت قبل ،حال نوبت آن رسیده تا به صورت عملی وارد کار شویم! در این بخش شما باید Fsمناسبی را انتخاب کنید تا بتوانید سیگنال نمونه برداری شده را به خوبی نمایش دهید .پیشنهاد میشود برای این کار از فرکانس ۰۰۰۰هرتز استفاده نمایید .به منظور نمونه برداری همانطور که میدانید باید ابتدا سیگنال ) f(tرا به صورت دنباله ) ( در بیاورید که در آن داریم . خروجی خواسته شده از شما در این بخش یک کد متلب است که این سیگنال را پس از تبدیل به دنبالهی مربوطه به تصویر بکشد. این کار را برای فرکانسهای مختلف نمونه برداری انجام دهید و تغییرات ایجاد شده را مشاهده کنید. -۲-1به دست آوردن طیف فرکانسی برای بررسی بهتر سیگنالها ،ما همواره به طیف فرکانسی و تبدیل فوریهی آنها دقت میکنیم .در این بخش از تمرین شما باید دنباله ای را که در بخش قبلی به دست آوردید به حوزهی فرکانس ببرید و سپس آن را مشاهده و بررسی کنید .برای گرفتن تبدیل فوریه از توابع fftو fftshiftاستفاده کنید ( طرز صحیح استفاده از این توابع در کالس حل تمرین توضیح داده خواهد شد و اگر نمی خواهید در کالس حل تمرین حاضر شوید از Helpنرم افزار متلب می توانید استفاده نمایید) .پس از به دست آوردن تبدیل فوریه اندازهی آن را برای فرکانسهای مختلف در متلب نمایش دهید (با استفاده از دستور .)plot اگر این عمل را برای فرکانسهای مختلف نمونه برداری انجام دهیم چه تغییراتی را مشاهده خواهیم نمود؟ -۳-1اصوات طبیعی در این بخش برنامه audacityرا بر روی سیستمهای خود نصب کنید .سپس صدای خود را با فرکانسهای نمونه برداری مختلف ضبط کرده و نتایج را تحلیل نمایید .این تغییر فرکانس چه تاثیری در صدایی که از خود میشنوید دارد؟ ( فرکانسهای پیشنهادی برای ضبط صدا 5kh, 11kh, 22kh, 96kh :میباشند) -۴-1اصوات غیر طبیعی با استفاده از تابعی که در بخشهای قبلی برای تولید سیگنال با فرکانس ۰۰هرتز نوشتید ،در این بخش میخواهیم صداهای مجازی تولید کرده و به آنها گوش دهیم .فرکانس نمونه برداری را ۰۰۰۰هرتز قرار میدهیم و فاز اولیه را برابر با صفر در نظر میگیریم .حال دنباله را با فرکانسهای مختلف ،4.5KHz ،3KHz ،2KHz ، 500Hz ،100Hz 7KHz ،5.5KHzتولید کنید و با استفاده از دستور soundو یا echoآنها را پخش نمایید .نتایج را توضیح دهید و بگویید که آیا فرکانس نمونه برداری در این بخش تاثیری داشت یا نه و اگر جواب مثبت است تاثیر آن را توضیح دهید. -۲پدیدهی Aliasingدر سیگنالها همانگونه که میدانید aliasing ،زمانی رخ میدهد که فرکانس نمونه برداری کمتر از نرخ نایکوئیست باشد .این پدیده در حوزه فرکانس ،به صورت نمایش فرکانسهای باال در محدوده فرکانسهای پایین ظاهر میشود .در حوزه زمان نیز ،این پدیده باعث از بین رفتن اطالعات سیگنال میگردد .لذا aliasingیک پدیده مزاحم بوده و باید رفع شود. راههای مختلفی برای مقابله با aliasingوجود دارد که رعایت نرخ نایکوئیست یکی از آنهاست .متاسفانه بسیاری از سیگنالها در محیط اطراف ،محدوده فرکانسی معینی ندارند و برای این سیگنالها ،امکان رعایت نرخ نایکوئیست وجود ندارد .یک راهحل مناسب برای ذخیره سازی این نوع سیگنالها ،حذف فرکانسهای باالی سیگنال به وسیله یک فیلتر پایینگذر آنالوگ پیش از ذخیرهسازی سیگنال است. در بسیاری اوقات ،طراحی یک فیلتر آنالوگ دقیق کار مشکلی است .لذا برای حل این مشکل از یک فیلتر دیجیتال استفاده می -شود .در این صورت مراحل ذکر شده در باال برای نمونه برداری سیگنال بدین صورت تغییر مییابد: ابتدا سیگنال پیوسته در زمان ،نمونه برداری افزایشی میشود .سپس یک فیلتر دیجیتال پایین گذر روی آن اعمال شده و دوباره سیگنال نمونه برداری کاهشی میگردد. با توجه به آنچه در درس سیگنالها و سیستمها خوانده اید ،توضیح دهید که این کار چگونه میتواند ،پدیده aliasing را حذف نماید؟ -1-۲اثر aliasingروی سیگنال صوت الف) یک سیگنال صوتی نمونه برداری شده در فرکانس ۰1کیلوهرتز و 8بیت را در نظر بگیرید .این سیگنال، سیگنال upsampleشده شماست .برای مشاهده اثر پدیده aliasingروی این سیگنال ،بدون پیش فیلتر کردن، روی آن نمونه برداری کاهشی انجام دهید .نتیجه را گوش کنید. برای این کار میتوانید از کد زیر استفاده کنید: )function sp(infilename,dsr %infilename is your signal name and dsr is downsampling rate )'fprintf('\n the origional sound \n ;)[y,Fs]=wavread(infilename % Fs is sample rate in Hz )if(rem(length(y),dsr)~=0 ;))y=y(1:length(y)- rem(length(y),dsr end %play it )sound(y,Fs ;pause %Downsample ;)'fprintf('\n the downsampled sound \n ;))x=y(1:dsr:length(y ;)sound(x,Fs/dsr ;pause %save down sample as down.wav ;)'wavwrite(x,Fs/dsr,'down.wav این آزمایش را برای مقادیر نرخ نمونه برداری 2و ۳و ۰امتحان کنید .نمونه برداری کاهشی چه اثری بر روی سیگنال شنیده شده گذاشته است؟ ب) در این قسمت ،برای حذف اثر ،aliasingپیش از نمونهبرداری کاهشی ،از یک فیلتر پایینگذر برای فیلتر کردن سیگنال استفاده میشود .برای فیلتر کردن سیگنال پیش از نمونهبرداری کاهشی ،میتوانید از دستور زیر کمک بگیرید: ;)filter_coeff = fir1(n, 1/dsr ;) filteredSound = filter( filter_coeff, 1, infilename دستور ،fir1یک فیلتر پایینگذر را در حوزه زمان به طول nبرای شما شبیهسازی میکند .دستور filterنیز سیگنال ورودی را با فیلتر طراحی شده در حوزه زمان کانوالو مینماید .برای آگاهی از نحوه عملکرد این دستورات ،از helpنرم افزار MATLABکمک بگیرید. سیگنال حاصل را گوش کنید .چه تفاوتی میان این سیگنال و سیگنال قسمت (الف) وجود دارد؟ این مقایسه را برای مقادیر مختلف dsrکه در قسمت قبل ،امتحان کردید ،انجام دهید .آیا عمل پیش فیلتر کردن بر روی کیفیت سیگنال موثر بوده است؟ اگر dsr>5باشد خروجی چگونه خواهد بود؟ آیا هنوز پیش فیلتر کردن موثر است؟ چرا؟ در کدام حالت ،پیش فیلتر کردن بیشترین تاثیر مثبت را روی خروجی این مرحله داشته است؟ -۳کوانتیزاسیون نمونه برداری یکی از گامها در جهت ذخیره سازی و پردازش سیگنالها است .گام بعدی ،کوانتیزاسیون این سیگنالهای نمونه برداری شده است. -1-۳خطای کوانتیزاسیون در صورتی که بازه اعداد ] [a,bرا به 2nبخش تقسیم کنیم .حداکثر خطای کوانتیزاسیون هر بخش از سیگنال را به صورت نمادین محاسبه نمایید. -۲-۳کاهش خطای کوانتیزاسیون برای کمتر کردن تاثیرات منفی کوانتیزاسیون بر روی سیگنال روشهای مختلفی وجود دارد .یکی از آنها را به دلخواه انتخاب کرده و راجع به آن توضیح دهید( .برای راحت تر شدن پاسخ ،فرض میکنیم سیگنال مورد بحث، سیگنال صوتی است) -۳-۳کوانتیزاسیون سیگنال صوتی. با استفاده از فرمول زیر میتوان کوانتیزاسیون را شبیه سازی کرد .با استفاده از این فرمول یک تابع quantization بنویسید که مقادیر aو bو Nو یک ماتریس مقادیر سیگنال را دریافت کرده و عمل کوانتیزیشن را بر روی آنها شبیه سازی کند و خروجی را به صورت یک رشته از نمونههای کوانتیزه شده برگرداند. حال از تابعی که نوشته اید استفاده کنید و یک فایل صوتی را به دلخواه خود کوانتیزه کنید و نمودارهای مربوط به اصل سیگنال و کوانتیزه شده ی سیگنال و همچنین نمودار میزان خطا در لحظات مختلف را رسم کرده و در گزارش خود تحلیل کنید. «موفق باشید» موضوع تمرین بعدی :پردازش صوت
© Copyright 2025 Paperzz