simulink-control-matlab.pptx1783101664.pptx
3.2 MB
☝️☝️☝️☝️☝️☝️☝️☝️
آموزش سیمولینک در متلب
از اسلاید 30 به بعد به معرفی بلوک ها پرداخته شده است
@Matlab_Communication
آموزش سیمولینک در متلب
از اسلاید 30 به بعد به معرفی بلوک ها پرداخته شده است
@Matlab_Communication
MMS-HW1-SpringSemester2014.pdf
611.3 KB
آشنایی با مفاهیم نمونه برداری و تداخل و سطح بندی در پردازش صوت
"samling ,aliasing ,quantization"
به همراه کدهای متلب
@Matlab_Communication
"samling ,aliasing ,quantization"
به همراه کدهای متلب
@Matlab_Communication
دستورات مهم در MATLAB
-----------------------
ایجاد ماتریس:
A=[1,2,3 ; 4,5,6];
A=[1:10]
A=[1:2:10]
A=[10:-1:1]
A=zeros(2,3);
ایجاد ماتریس ۲ در۳ با مقادیر صفر
A=ones(4,6);
یجاد ماتریس ۴ در۶ با مقادیر یک
T=A’
ترانهاده ماتریس A:
دستیابی به یک یا چند مقدار از یک ماتریس:
A(2,3);
عنصر سطر۲ ستون ۳
A(:,2);
عناصر ستون ۲
A(1,:);
عناصر سطر ۱
A(3:6, 2:4);
ستونهای ۲ تا ۴ از سطرهای۳ تا ۶
دستیابی به ستون آخر یک ماتریس:
A(:,end)
مجموع ستونهای یک ماتریس دو بعدی (و یا مجموع مقادیر یک ماتریس یک بعدی):
sum(A’)’;
مجموع سطرهای یک ماتریس دو بعدی
بدست آوردن مقادیر روی قطر اصلی A:
diag(A)
ایجاد ماتریس جادویی n×n: (ماتریس جادویی ماتریسی است که مجموع تمام سطرها و ستونها و قطرهای آن برابر است)
magic(n)
می خواهیم جای ستونهای دوم و سوم در ماتریس B را جابه جا کرده و نتیجه را در A ذخیره نماییم:
A=B(: , [1,3,2,4])
توابع مقدماتی پرکاربرد:
abs(A);
exp(A);
sin(A);
sqrt(A);
factorial(n);
<li>log2(A)
لگاریتم در مبنای ۲
<li>log10(A)
لگاریتم در مبنای ۱۰
برای مشاهده لیست توابع مقدماتی عبارت help elfun را تایپ کنید.
عملگرهای محاسباتی:
A=B+C جمع ماتریسی
A=B-C تفریق ماتریسی
A=B*C ضرب ماتریسی
A=B .* C ضرب عناصر متناظر در یکدیگرA=B ./ C تقسیم عناصر متناظر بر یکدیگرA=B .^ C به توان رساندن هر عنصر به عنصر متناظرش
اگر B یک ماتریس n×m باشد و C یک عدد اسکالر (یک ماتریس ۱×۱) باشد آنگاه عملگرهای فوق مقدار موجود در C را در تک تک مقادیر B اِعمال میکنند.
بنابراین عبارت A=B+1 تک تک مقادیر B را با ۱ جمع کرده و در A ذخیره میکند. عبارت A=B.^2 نیز تک تک مقادیر B را به توان ۲ رسانده و نتیجه را در A ذخیره میکند.
روش بدست آوردن باقیمانده تقسیم:
A=mod(B,C)
ایجاد یک ماتریس ۳×۴ از اعداد تصادفی که دارای توزیع یکنواخت بین ۰ تا ۱ میباشند:
A=rand(3,4)
ایجاد یک ماتریس ۳×۴ از اعداد تصادفی بین a تاb
A=floor((b-a+1)*rand(3,4)+a)
ایجاد یک ماتریس ۱×n که اعداد صحیح ۱ تا n به ترتیب تصادفی در آن قرار گرفتهاند:
A=randperm(n)
ایجاد ماتریس با n×m که در هر سطر عناصر ۱ تا m به طور تصادفی قرار داده شده اند
for i=1:n</pre>
A(i,:)=randperm(m);
end
روند کردن اعداد:
</pre>
<ul>
<li>A=fix(B) گرد کردن به سمت صفر</li>
<li>A=round(B) گرد کردن به سمت نزدیک ترین عدد صحیح(براساس رقم اعشار)</li>
<li>A=ceil(B) گرد کردن به سمت مثبت بینهایت</li>
<li>A=floor(B) گرد کردن به سمت منفی بینهایت</li>
</ul>
<pre>
مرتب کردن هر یک از ستونهای ماتریس B بطور جداگانه:
A=sort(B)
مرتب کردن سطرهای ماتریس B ابتدا بر اساس ستون اول سپس ستون دوم و الی آخر:
A=sortrows(B)
مرتب کردن سطرهای ماتریس B فقط بر اساس ستون سوم:
A=sortrows(B,3)
حذف ستون دوم ماتریس A:
A(: , 2) = []
میانگین هر یک از ستونهای ماتریس B:
A=mean(B)
میانه هر یک از ستونهای ماتریس B:
A=median(B)
انحراف از معیار هر یک از ستونهای ماتریس B:
A=std(B)
مینیمم هر یک از ستونهای ماتریس B:
A=min(B)
ماکسیمم هر یک از ستونهای ماتریس B:
A=max(B)
یافتن اندیس عددهای غیر صفر در ماتریس B:
A=find(B)
یافتن اندیس سطر و ستون خانه مساوی ۲ ماتریس B:
[i,j]=find(B==2)
یافتن اندیس سطر و ستون خانه مساوی ۲ در سطر سوم از ماتریس B:
[i,j]=find(B(3,:)==2)
یافتن اندیس عددهای بین ۱ تا ۵ در ماتریس B:
A=find(A>1 & A<5)
جمع تجمعی عناصر ماتریس B:
A=cumsum(B)
حاصل ضرب عناصر ماتریس B:
A=prod(B)
تولید n عدد در فواصل مساوی که از a شروع و به b ختم میشود:
A=linspace(a,b,n)
ترسیم دو بعدی y برحسب x:
plot(x,y)
ترسیم سه بعدی:
plot3(x,y,z)
دستور زیر مقادیری از B که از ۶ بزرگتر است را در A ذخیره میکند:
A=B(B>6)
شیفت دادن چرخشی: دستور زیر ماتریس B را یک واحد در جهت عمودی (از بالا به پایین) و دو واحد در جهت افقی (از راست به چپ) شیفت چرخشی میدهد.
A=circshift(B, [1, -2])
دستور زیر ابعاد یک ماتریس را برمیگرداند:
size(A)
دستور زیر طول یک بردار را برمیگرداند: (اگر A دارای بیش از یک بعد باشد، طول طولانیترین بعد برگردانده میشود)
length(A)
با دستور زیر میتوان تابع f را در محیط editor مشاهده کرد و در صورت دلخواه آن را تغییر داد. با این دستور حتی میتوان توابع خود MATLAB را نیز ویرایش نمود.
edit f
دستور زیر ماتریس B را بصورت تنک (خلوت) در A ذیره میکند. اگر تعداد زیادی از مقادیر یک ماتریس برابر با صفر باشد با این روش میتوان در تخصیص حافظه صرفه جویی کرد.
A = sparse(B)
دستور زیر ماتریس B را از حالت تنک به حالت کامل تبدیل کرده و در A ذخیره میکند.
A = full(B)
توابع مخصوص رشته ها:
strcat متصل کردن دو رشته
strcmp مقایسه دو رشته
strcmpi مقایس
@Matlab_Communication
-----------------------
ایجاد ماتریس:
A=[1,2,3 ; 4,5,6];
A=[1:10]
A=[1:2:10]
A=[10:-1:1]
A=zeros(2,3);
ایجاد ماتریس ۲ در۳ با مقادیر صفر
A=ones(4,6);
یجاد ماتریس ۴ در۶ با مقادیر یک
T=A’
ترانهاده ماتریس A:
دستیابی به یک یا چند مقدار از یک ماتریس:
A(2,3);
عنصر سطر۲ ستون ۳
A(:,2);
عناصر ستون ۲
A(1,:);
عناصر سطر ۱
A(3:6, 2:4);
ستونهای ۲ تا ۴ از سطرهای۳ تا ۶
دستیابی به ستون آخر یک ماتریس:
A(:,end)
مجموع ستونهای یک ماتریس دو بعدی (و یا مجموع مقادیر یک ماتریس یک بعدی):
sum(A’)’;
مجموع سطرهای یک ماتریس دو بعدی
بدست آوردن مقادیر روی قطر اصلی A:
diag(A)
ایجاد ماتریس جادویی n×n: (ماتریس جادویی ماتریسی است که مجموع تمام سطرها و ستونها و قطرهای آن برابر است)
magic(n)
می خواهیم جای ستونهای دوم و سوم در ماتریس B را جابه جا کرده و نتیجه را در A ذخیره نماییم:
A=B(: , [1,3,2,4])
توابع مقدماتی پرکاربرد:
abs(A);
exp(A);
sin(A);
sqrt(A);
factorial(n);
<li>log2(A)
لگاریتم در مبنای ۲
<li>log10(A)
لگاریتم در مبنای ۱۰
برای مشاهده لیست توابع مقدماتی عبارت help elfun را تایپ کنید.
عملگرهای محاسباتی:
A=B+C جمع ماتریسی
A=B-C تفریق ماتریسی
A=B*C ضرب ماتریسی
A=B .* C ضرب عناصر متناظر در یکدیگرA=B ./ C تقسیم عناصر متناظر بر یکدیگرA=B .^ C به توان رساندن هر عنصر به عنصر متناظرش
اگر B یک ماتریس n×m باشد و C یک عدد اسکالر (یک ماتریس ۱×۱) باشد آنگاه عملگرهای فوق مقدار موجود در C را در تک تک مقادیر B اِعمال میکنند.
بنابراین عبارت A=B+1 تک تک مقادیر B را با ۱ جمع کرده و در A ذخیره میکند. عبارت A=B.^2 نیز تک تک مقادیر B را به توان ۲ رسانده و نتیجه را در A ذخیره میکند.
روش بدست آوردن باقیمانده تقسیم:
A=mod(B,C)
ایجاد یک ماتریس ۳×۴ از اعداد تصادفی که دارای توزیع یکنواخت بین ۰ تا ۱ میباشند:
A=rand(3,4)
ایجاد یک ماتریس ۳×۴ از اعداد تصادفی بین a تاb
A=floor((b-a+1)*rand(3,4)+a)
ایجاد یک ماتریس ۱×n که اعداد صحیح ۱ تا n به ترتیب تصادفی در آن قرار گرفتهاند:
A=randperm(n)
ایجاد ماتریس با n×m که در هر سطر عناصر ۱ تا m به طور تصادفی قرار داده شده اند
for i=1:n</pre>
A(i,:)=randperm(m);
end
روند کردن اعداد:
</pre>
<ul>
<li>A=fix(B) گرد کردن به سمت صفر</li>
<li>A=round(B) گرد کردن به سمت نزدیک ترین عدد صحیح(براساس رقم اعشار)</li>
<li>A=ceil(B) گرد کردن به سمت مثبت بینهایت</li>
<li>A=floor(B) گرد کردن به سمت منفی بینهایت</li>
</ul>
<pre>
مرتب کردن هر یک از ستونهای ماتریس B بطور جداگانه:
A=sort(B)
مرتب کردن سطرهای ماتریس B ابتدا بر اساس ستون اول سپس ستون دوم و الی آخر:
A=sortrows(B)
مرتب کردن سطرهای ماتریس B فقط بر اساس ستون سوم:
A=sortrows(B,3)
حذف ستون دوم ماتریس A:
A(: , 2) = []
میانگین هر یک از ستونهای ماتریس B:
A=mean(B)
میانه هر یک از ستونهای ماتریس B:
A=median(B)
انحراف از معیار هر یک از ستونهای ماتریس B:
A=std(B)
مینیمم هر یک از ستونهای ماتریس B:
A=min(B)
ماکسیمم هر یک از ستونهای ماتریس B:
A=max(B)
یافتن اندیس عددهای غیر صفر در ماتریس B:
A=find(B)
یافتن اندیس سطر و ستون خانه مساوی ۲ ماتریس B:
[i,j]=find(B==2)
یافتن اندیس سطر و ستون خانه مساوی ۲ در سطر سوم از ماتریس B:
[i,j]=find(B(3,:)==2)
یافتن اندیس عددهای بین ۱ تا ۵ در ماتریس B:
A=find(A>1 & A<5)
جمع تجمعی عناصر ماتریس B:
A=cumsum(B)
حاصل ضرب عناصر ماتریس B:
A=prod(B)
تولید n عدد در فواصل مساوی که از a شروع و به b ختم میشود:
A=linspace(a,b,n)
ترسیم دو بعدی y برحسب x:
plot(x,y)
ترسیم سه بعدی:
plot3(x,y,z)
دستور زیر مقادیری از B که از ۶ بزرگتر است را در A ذخیره میکند:
A=B(B>6)
شیفت دادن چرخشی: دستور زیر ماتریس B را یک واحد در جهت عمودی (از بالا به پایین) و دو واحد در جهت افقی (از راست به چپ) شیفت چرخشی میدهد.
A=circshift(B, [1, -2])
دستور زیر ابعاد یک ماتریس را برمیگرداند:
size(A)
دستور زیر طول یک بردار را برمیگرداند: (اگر A دارای بیش از یک بعد باشد، طول طولانیترین بعد برگردانده میشود)
length(A)
با دستور زیر میتوان تابع f را در محیط editor مشاهده کرد و در صورت دلخواه آن را تغییر داد. با این دستور حتی میتوان توابع خود MATLAB را نیز ویرایش نمود.
edit f
دستور زیر ماتریس B را بصورت تنک (خلوت) در A ذیره میکند. اگر تعداد زیادی از مقادیر یک ماتریس برابر با صفر باشد با این روش میتوان در تخصیص حافظه صرفه جویی کرد.
A = sparse(B)
دستور زیر ماتریس B را از حالت تنک به حالت کامل تبدیل کرده و در A ذخیره میکند.
A = full(B)
توابع مخصوص رشته ها:
strcat متصل کردن دو رشته
strcmp مقایسه دو رشته
strcmpi مقایس
@Matlab_Communication
دستورات مهم در متلب (قسمت دوم )
-----------------------
تمام جایگشتهای ممکن مقادیر یک بردار:
perms(A)
حذف مقادیر تکراری از یک بردار:
unique(A)
نمایش هیستوگرام مقادیر یک ماتریس:
hist(A,…)
-----------------------------------
دستورات کار با تصاویر:
; باز کردن پنجره جدید برای عکس بعدی تا عکس قبلی از بین نرود
اشتراک دو مجموعه:
intersect(A,B)
دستورات برنامه نویسی
حلقه ها
</pre>
for i=start : end
دستورات
end
while(شرط)
دستورات
end
if(شرط)
دستورات
end
اجرای برنامه تا فشردن یک کلید متوقف میماند:
pause
اجرای برنامه به مدت n ثانیه متوقف میماند:
pause(n)
در عبارت زیر اولین گروه از دستورات اجرا میشوند. اگر خطایی رخ دهد اجرای این دستورات متوقف شده و دومین گروه از دستورات اجرا میشود.
try</pre>
statements
catch
statement
end
با دستور زیر میتوان محیط ایجاد رابط کاربر گرافیکی را مشاهده کرد.
guide
با دستور زیر میتوان مدت زمان اجرای هر یک از خطوط برنامه را مشاهده کرد.
profile {on, off, viewer}
نمایش پیغام: نحوه استفاده از این دستور همانند printf() در زبان C است.
fprintf(‘\n i=%d’, i)
نمایش پیغام خطا و خروج از اجرای برنامه:
error(‘your error message
@Matlab_Communication
-----------------------
تمام جایگشتهای ممکن مقادیر یک بردار:
perms(A)
حذف مقادیر تکراری از یک بردار:
unique(A)
نمایش هیستوگرام مقادیر یک ماتریس:
hist(A,…)
-----------------------------------
دستورات کار با تصاویر:
; باز کردن پنجره جدید برای عکس بعدی تا عکس قبلی از بین نرود
اشتراک دو مجموعه:
intersect(A,B)
دستورات برنامه نویسی
حلقه ها
</pre>
for i=start : end
دستورات
end
while(شرط)
دستورات
end
if(شرط)
دستورات
end
اجرای برنامه تا فشردن یک کلید متوقف میماند:
pause
اجرای برنامه به مدت n ثانیه متوقف میماند:
pause(n)
در عبارت زیر اولین گروه از دستورات اجرا میشوند. اگر خطایی رخ دهد اجرای این دستورات متوقف شده و دومین گروه از دستورات اجرا میشود.
try</pre>
statements
catch
statement
end
با دستور زیر میتوان محیط ایجاد رابط کاربر گرافیکی را مشاهده کرد.
guide
با دستور زیر میتوان مدت زمان اجرای هر یک از خطوط برنامه را مشاهده کرد.
profile {on, off, viewer}
نمایش پیغام: نحوه استفاده از این دستور همانند printf() در زبان C است.
fprintf(‘\n i=%d’, i)
نمایش پیغام خطا و خروج از اجرای برنامه:
error(‘your error message
@Matlab_Communication
M.Vat:
توابع پرکاربرد مخابراتی 👇بخش اول
---------------------------------------------
conv
این فایل، مثالی برای محاسبه کانولوشن دو سیگنال طول محدود با استفاده از دستور ()conv است. این دستور برای محاسبه ی کانولوشن دو سیگنال طبق دستور
C=conv(A,B)
محاسبه می شود که در آن A و B بردارهای حاوی نمونه های سیگنالها هستند که می توانند در فرمت single , float ویا double باشند. لازم به ذکر است که طول بردار C برابر خواهد بود با مجموع طول دو بردار منهای یک. با دستور ()stem نیز، نمونه ها به صورت گسسته رسم می شود.
deconv
در این فایل، مثال مربوط به محاسبه عکس کانولوشن نشان داده شده است. از دستور ()deconv برای این کار استفاده شده است. در حالت کلی داریم y=conv(x,h) + g که با داشتن خروجی و یکی از ورودی ها (h یا x) میتوان ورودی دیگر و بردار g را محاسبه کرد. لازم به یادآوریست که بردار g تنها در سیستمهای LTI برابر صفر می باشد.
fft
در این فایل، برای دستور fft مثالی آورده شده است که در آن تبدیل فوریه سیگنال سینک را مشاهده می کنید.
Y = fft(X,n)
دستور fft ، Fast Fourier Transform سیگنال x را با در نظر گرفتن تعداد نقاط n محاسبه می کند.به نوعی n بیان میدارد که DFT چند نقطه ای مد نظر است. وارد کردن ورودی دوم ضروری نیست. از آنجا که دستور fft مقدار محاسبه شده را برای بازه ۰تا ۲pi نمایش می دهد با استفاده از دستور fftshift می توان مقدار مورد نظر را در بازه pi- تا pi مشاهده کرد. نکته مهم این است که برای اجرای دستور ifft (فوریه معکوس) روی خروجی این تابع، خروجی باید مجددا به حالت ۰ تا ۲pi برگردد. در نتیجه لازم است که یک بار دیگر از دستور fftshift استفاده گردد. همچنین با توجه به اینکه تبدیل فوریه در حالت کلی مختلط میباشد برای رسم اندازهی آن باید از دستور abs استفاده کنیم تا اندازه تبدیل فوریه رسم گردد.
fftshift
مثال دیگری از دستورهای fft و fftshift میباشد. در این فایل تبدیل فوریه سیگنال توان دوم سینک را مشاهده می کنیم.
ifft
در این فایل، هدف محاسبه fft معکوس با استفاده از دستور ifft است.
y = ifft(X,n)
اگر x، یک سیگنال دلخواه باشد، n نشان دهنده این است که تبدیل فوریه گسسته معکوس چند نقطه ای باشد، با استفاده از دستور ifft می توان fft معکوس آنرا محاسبه کرد. که x همان fft مذکور است. در اینجا نیز وارد کردن ورودی دوم ضروری نیست.
@Matlab_Communication
توابع پرکاربرد مخابراتی 👇بخش اول
---------------------------------------------
conv
این فایل، مثالی برای محاسبه کانولوشن دو سیگنال طول محدود با استفاده از دستور ()conv است. این دستور برای محاسبه ی کانولوشن دو سیگنال طبق دستور
C=conv(A,B)
محاسبه می شود که در آن A و B بردارهای حاوی نمونه های سیگنالها هستند که می توانند در فرمت single , float ویا double باشند. لازم به ذکر است که طول بردار C برابر خواهد بود با مجموع طول دو بردار منهای یک. با دستور ()stem نیز، نمونه ها به صورت گسسته رسم می شود.
deconv
در این فایل، مثال مربوط به محاسبه عکس کانولوشن نشان داده شده است. از دستور ()deconv برای این کار استفاده شده است. در حالت کلی داریم y=conv(x,h) + g که با داشتن خروجی و یکی از ورودی ها (h یا x) میتوان ورودی دیگر و بردار g را محاسبه کرد. لازم به یادآوریست که بردار g تنها در سیستمهای LTI برابر صفر می باشد.
fft
در این فایل، برای دستور fft مثالی آورده شده است که در آن تبدیل فوریه سیگنال سینک را مشاهده می کنید.
Y = fft(X,n)
دستور fft ، Fast Fourier Transform سیگنال x را با در نظر گرفتن تعداد نقاط n محاسبه می کند.به نوعی n بیان میدارد که DFT چند نقطه ای مد نظر است. وارد کردن ورودی دوم ضروری نیست. از آنجا که دستور fft مقدار محاسبه شده را برای بازه ۰تا ۲pi نمایش می دهد با استفاده از دستور fftshift می توان مقدار مورد نظر را در بازه pi- تا pi مشاهده کرد. نکته مهم این است که برای اجرای دستور ifft (فوریه معکوس) روی خروجی این تابع، خروجی باید مجددا به حالت ۰ تا ۲pi برگردد. در نتیجه لازم است که یک بار دیگر از دستور fftshift استفاده گردد. همچنین با توجه به اینکه تبدیل فوریه در حالت کلی مختلط میباشد برای رسم اندازهی آن باید از دستور abs استفاده کنیم تا اندازه تبدیل فوریه رسم گردد.
fftshift
مثال دیگری از دستورهای fft و fftshift میباشد. در این فایل تبدیل فوریه سیگنال توان دوم سینک را مشاهده می کنیم.
ifft
در این فایل، هدف محاسبه fft معکوس با استفاده از دستور ifft است.
y = ifft(X,n)
اگر x، یک سیگنال دلخواه باشد، n نشان دهنده این است که تبدیل فوریه گسسته معکوس چند نقطه ای باشد، با استفاده از دستور ifft می توان fft معکوس آنرا محاسبه کرد. که x همان fft مذکور است. در اینجا نیز وارد کردن ورودی دوم ضروری نیست.
@Matlab_Communication
توابع پرکاربرد مخابراتی 👇بخش دوم
--------------------------------------------
fftofsin
مثال دیگری از دستور fft و fftshift میباشد. در این فایل، نیز شاهد تبدیل فوریه سیگنالی هستیم، که حاصل از جمع دو سیگنال سینوسی با فرکانس های مختلف و نیز ضرایب ۱ و ۵ است.
fftofsin_denoising
مثالی از محاسبه fft و سپس ifft میباشد. در این فایل سیگنال اصلی با سیگنال نویز با دامنه کم جمع شده است. با توجه به اینکه فاصله بین –pi تا +pi با فاصله ۰٫۰۵ نمونه گیری شده است ، در تبدیل ورودی حدودا ۱۲۶ نقطه خواهیم داشت که فرکانس بالا در تابع fft در نقطه ۶۳ ظاهر می شود که برای حذف نویز فاصله ۴۰-۱۲۶ تا ۴۰+۱۲۶ صفر در نظر گرفته می شود. پس از تبدیل فوریه گرفتن و عبور دادن سیگنال از فیلتر، تبدیل فوریه معکوس گرفته ایم که شاهد این هستیم که دیگر نویزی روی سیگنال سینوسی اصلی وجود ندارد.
downsamp
در این فایل، ابتدا برداری متناهی از عناصر به نام x تعریف شده است. با استفاده از دستور ()downsample، از هر ۲ نمونه یک نمونه را برداشته و دیگری را حذف میکنیم.
با دستور:
downsample(x,n)
تعداد نمونه ها به ۱/n کاهش می یابد. یعنی از هر n نمونه، یکی را میگیریم و بقیه را رها می کنیم. تفاوت این دستور با decimate در این است، که در اینجا دیگر فیلتر ضد تداخل نداریم و ممکن است تداخل رخ دهد.
از دستور axis برای مشخص کردن ابتدا و انتهای محورهای افقی و عمودی استفاده می شود.
downsamp مثال
در این فایل، تابع سینک در فاصله ۲۰- تا ۲۰ با دوره تناوب T=0.3 نمونه برداری شده است. پس از downsample با نرخ ۲ مشاهده می کنیم که این سیگنال در نزدیکی لبه تداخل قرار می گیرد. حتی تا حدودی دو سمت انتهایی سیگنال دچار تداخل جزیی شده است.
decimate
در این فایل، به دستور مربوط به کاهش نرخ نمونه برداری پرداخته شده است.
y=decimate(x,r)
با استفاده از این تابع می توان نرخ نمونه برداری سیگنال x را با ضریب ۱/r کاهش و یا پریود نمونه برداری را با نرخ r افزایش داد. می توان گفت با استفاده از این دستور تبدیل فوریه به نسبت r پهن تر و دامنه ی آن ۱/r می شود. نکته ی مهم در مورد این دستور داشتن فیلتر ضد تداخل به طور ضمنی در آن است. یعنی ابتدا سیگنال ورودی از فیلتر عبور می کند تا الیاسینگ زمانی (تداخل زمانی) رخ ندهد، سپس خروجی فیلتر ضد تداخل است که کاهش نرخ داده می شود.
@Matlab_Communication
--------------------------------------------
fftofsin
مثال دیگری از دستور fft و fftshift میباشد. در این فایل، نیز شاهد تبدیل فوریه سیگنالی هستیم، که حاصل از جمع دو سیگنال سینوسی با فرکانس های مختلف و نیز ضرایب ۱ و ۵ است.
fftofsin_denoising
مثالی از محاسبه fft و سپس ifft میباشد. در این فایل سیگنال اصلی با سیگنال نویز با دامنه کم جمع شده است. با توجه به اینکه فاصله بین –pi تا +pi با فاصله ۰٫۰۵ نمونه گیری شده است ، در تبدیل ورودی حدودا ۱۲۶ نقطه خواهیم داشت که فرکانس بالا در تابع fft در نقطه ۶۳ ظاهر می شود که برای حذف نویز فاصله ۴۰-۱۲۶ تا ۴۰+۱۲۶ صفر در نظر گرفته می شود. پس از تبدیل فوریه گرفتن و عبور دادن سیگنال از فیلتر، تبدیل فوریه معکوس گرفته ایم که شاهد این هستیم که دیگر نویزی روی سیگنال سینوسی اصلی وجود ندارد.
downsamp
در این فایل، ابتدا برداری متناهی از عناصر به نام x تعریف شده است. با استفاده از دستور ()downsample، از هر ۲ نمونه یک نمونه را برداشته و دیگری را حذف میکنیم.
با دستور:
downsample(x,n)
تعداد نمونه ها به ۱/n کاهش می یابد. یعنی از هر n نمونه، یکی را میگیریم و بقیه را رها می کنیم. تفاوت این دستور با decimate در این است، که در اینجا دیگر فیلتر ضد تداخل نداریم و ممکن است تداخل رخ دهد.
از دستور axis برای مشخص کردن ابتدا و انتهای محورهای افقی و عمودی استفاده می شود.
downsamp مثال
در این فایل، تابع سینک در فاصله ۲۰- تا ۲۰ با دوره تناوب T=0.3 نمونه برداری شده است. پس از downsample با نرخ ۲ مشاهده می کنیم که این سیگنال در نزدیکی لبه تداخل قرار می گیرد. حتی تا حدودی دو سمت انتهایی سیگنال دچار تداخل جزیی شده است.
decimate
در این فایل، به دستور مربوط به کاهش نرخ نمونه برداری پرداخته شده است.
y=decimate(x,r)
با استفاده از این تابع می توان نرخ نمونه برداری سیگنال x را با ضریب ۱/r کاهش و یا پریود نمونه برداری را با نرخ r افزایش داد. می توان گفت با استفاده از این دستور تبدیل فوریه به نسبت r پهن تر و دامنه ی آن ۱/r می شود. نکته ی مهم در مورد این دستور داشتن فیلتر ضد تداخل به طور ضمنی در آن است. یعنی ابتدا سیگنال ورودی از فیلتر عبور می کند تا الیاسینگ زمانی (تداخل زمانی) رخ ندهد، سپس خروجی فیلتر ضد تداخل است که کاهش نرخ داده می شود.
@Matlab_Communication
توابع پرکاربرد مخابراتی 👇بخش سوم
---------------------------------------------
ifft_2
این فایل نیز مانند فایل قبلی است ولی در اینجا نرخ کاهش ۸ به کار رفته است و با مشاهده خروجی و معکوس فوریه، شاهد این هستیم که تداخل رخ داده است و سیگنال، شکل اولیه خود را از دست داده است.در صورتی که اگر از فیلتر ضد تداخل استفاده می شد، میزان اعوجاج در سیگنال خروجی کاهش می یافت
ifft_3
در این فایل، همان دستورات فایل قبلی انجام شده است، با این تفاوت که در اینجا به جای downsample از decimate استفاده شده است که در آن فیلتر ضد تداخل وجود دارد و در صورت رخ دادن اعوجاج اطلاعات فرکانسهای بالا تر فقط از بین میروند و دیگر دچار تداخل نمیشوند (معمولا از بین رفتن اطلاعات بهتر از تداخل است). شاهد این هستیم که در ضریب کاهش نرخ های پایین، مثلا ۲، پس از تداخل، فقط قسمت های انتهایی سیگنال در دو سمت دچار اعوجاج می شود و شکل اصلی سیگنال حفظ می شود. با بالا رفتن ضریب کاهش نرخ، کم کم بخش بیشتری از سیگنال غیر قابل استفاده می شود تا اینکه کلا شکل سیگنال از بین می رود.
upsamp
در این فایل، به جای دستورات قبلی، از دستور ()upsample استفاده شده است که مشابه دستور ()interp می باشد و تعداد نمونه ها را افزایش می دهد، با این تفاوت که نمونه های افزایش یافته، صفر میباشد. یعنی تنها کاری که انجام می شود این است که تعدادی نمونه با مقدار صفر در میان نمونه های قبلی اضافه می شوند.
upsamp
هدف این برنامه مشاهده Up Sampling در حوزه زمان و فرکانس است.مشاهده می شود که در حوزه فرکانس، شکل موج به تعداد ضریب Up Sampling تکرار می شود و پدیده Zero Padding نیز در معکوس فوربه این سیگنال قابل مشاهده است، که نشان دهنده اضافه کردن تعدادی صفر متناسب با ضریب Up Sampling است.
@Matlab_Communication
---------------------------------------------
ifft_2
این فایل نیز مانند فایل قبلی است ولی در اینجا نرخ کاهش ۸ به کار رفته است و با مشاهده خروجی و معکوس فوریه، شاهد این هستیم که تداخل رخ داده است و سیگنال، شکل اولیه خود را از دست داده است.در صورتی که اگر از فیلتر ضد تداخل استفاده می شد، میزان اعوجاج در سیگنال خروجی کاهش می یافت
ifft_3
در این فایل، همان دستورات فایل قبلی انجام شده است، با این تفاوت که در اینجا به جای downsample از decimate استفاده شده است که در آن فیلتر ضد تداخل وجود دارد و در صورت رخ دادن اعوجاج اطلاعات فرکانسهای بالا تر فقط از بین میروند و دیگر دچار تداخل نمیشوند (معمولا از بین رفتن اطلاعات بهتر از تداخل است). شاهد این هستیم که در ضریب کاهش نرخ های پایین، مثلا ۲، پس از تداخل، فقط قسمت های انتهایی سیگنال در دو سمت دچار اعوجاج می شود و شکل اصلی سیگنال حفظ می شود. با بالا رفتن ضریب کاهش نرخ، کم کم بخش بیشتری از سیگنال غیر قابل استفاده می شود تا اینکه کلا شکل سیگنال از بین می رود.
upsamp
در این فایل، به جای دستورات قبلی، از دستور ()upsample استفاده شده است که مشابه دستور ()interp می باشد و تعداد نمونه ها را افزایش می دهد، با این تفاوت که نمونه های افزایش یافته، صفر میباشد. یعنی تنها کاری که انجام می شود این است که تعدادی نمونه با مقدار صفر در میان نمونه های قبلی اضافه می شوند.
upsamp
هدف این برنامه مشاهده Up Sampling در حوزه زمان و فرکانس است.مشاهده می شود که در حوزه فرکانس، شکل موج به تعداد ضریب Up Sampling تکرار می شود و پدیده Zero Padding نیز در معکوس فوربه این سیگنال قابل مشاهده است، که نشان دهنده اضافه کردن تعدادی صفر متناسب با ضریب Up Sampling است.
@Matlab_Communication
توابع پرکاربرد مخابراتی 👇بخش چهارم
---------------------------------------------
interpol
در این فایل، با عملکرد دستور interp آشنا می شویم. در واقع عملکرد ()interp عکس عملکرد ()decimate می باشد. یعنی نرخ نمونه برداری را افزایش می دهد. با این دستور، نقاطی با مقادیر برون یابی شده میان نقاطی که داریم، اضافه می شود. این دستور معادل دستور ()upsamp و یک فیلتر میان گذر متناسب میباشد.
interpol
در اینجا همچون مثال های قبلی عمل می کنیم با این تفاوت که به جای دستور decimate و downsample از interp استفاده می کنیم. یعنی به جای کاهش تعداد نمونه ها، تعداد نمونه ها افزایش می یابند.
دستور ()interp باعث باریکتر شدن طیف فرکانسی می شود. البته دامنه در اینجا به همان نسبت باریک شدن، افزایش می یابد.
resample
در این مثال نیز کماکان از سینک استفاده شده، در مثال های قبلی استفاده شده است که با استفاده از دستور ()resample تغییر نرخ نمونه برداری با یک عدد غیر صحیح صورت می پذیرد. این نرخ را می توان به صورت نوشت که در L مبین افزایش نرخ نمونه برداری و M نشان دهنده کاهش نرخ نمونه برداری است. همانطور که در کد استفاده شده است، آرگومان اول در دستور ()resample، سیگنال ورودی در حوزه زمان (به صورت نمونه های گسسته در زمان)، آرگومان دوم L و آرگومان سوم M می باشد. این عمل در واقع برابر دو عمل جداگانه افزایش و کاهش نرخ، با نسبت نرخ های داده شده، می باشد.
Wavwr
در این فایل هدف خواندن یک فایل صوتی به کمک دستور wavread و سپس اجرای آن توسط دستور wavplay می باشد . در دستور wavplay آرگومان اول نشان دهنده برداری است که می خواهیم اجرا شود و در آن ضریب ۵ برای افزایش شدت صوت استفاده شده است. آرگومان دوم دستور هم، نشان دهنده sampling rate مورد نظر برای اجرای فایل است. در نهایت دستور wavwrite برای ذخیره فایل با sampling rate و نام دلخواه استفاده می شود. توجه شود که این دستورات به صورت تدریجی در حال جایگزین شدن با دستور audioplayer و دستورات هم گروه آن (مانند audiorecorder) میباشد که در آمورش تصویری به صورت کامل به آنها پرداخته شده است.
Wavwr مثال
در این فایل هدف مشاهده عمل decimation بر روی شکل موج یک فایل صوتی در حوزه فرکانس است که مشاهده می شود با decimate با ضریب ۴ شکل موج در حوزه فرکانس به علت aliasing پیش آمده کمی خراب شده که با گوش کردن به فایل صوتی با دستور wavplay هم ملاحظه می شود که کیفیت فایل صوتی خروجی به وضوح کاهش یافته است. توجه شود که این دستورات به صورت تدریجی در حال جایگزین شدن با دستور audioplayer و دستورات هم گروه آن (مانند audiorecorder) میباشد که در آمورش تصویری به صورت کامل به آنها پرداخته شده است.
xcorr
در این برنامه، هدف نشان دادن تابع Cross Correlation دو تابع a و b است که توسط دستور xcorr انجام می شود. در ضمن برای نمایش توابع a و b و هم حاصل cross correlation آن ها در این برنامه از subplot استفاده شده است، بدین صورت که در subplot بالا هر دو تابع روی هم رسم شده و در subplot پایین حاصل rossc correlation آن دو رسم شده است
@Matlab_Communication
---------------------------------------------
interpol
در این فایل، با عملکرد دستور interp آشنا می شویم. در واقع عملکرد ()interp عکس عملکرد ()decimate می باشد. یعنی نرخ نمونه برداری را افزایش می دهد. با این دستور، نقاطی با مقادیر برون یابی شده میان نقاطی که داریم، اضافه می شود. این دستور معادل دستور ()upsamp و یک فیلتر میان گذر متناسب میباشد.
interpol
در اینجا همچون مثال های قبلی عمل می کنیم با این تفاوت که به جای دستور decimate و downsample از interp استفاده می کنیم. یعنی به جای کاهش تعداد نمونه ها، تعداد نمونه ها افزایش می یابند.
دستور ()interp باعث باریکتر شدن طیف فرکانسی می شود. البته دامنه در اینجا به همان نسبت باریک شدن، افزایش می یابد.
resample
در این مثال نیز کماکان از سینک استفاده شده، در مثال های قبلی استفاده شده است که با استفاده از دستور ()resample تغییر نرخ نمونه برداری با یک عدد غیر صحیح صورت می پذیرد. این نرخ را می توان به صورت نوشت که در L مبین افزایش نرخ نمونه برداری و M نشان دهنده کاهش نرخ نمونه برداری است. همانطور که در کد استفاده شده است، آرگومان اول در دستور ()resample، سیگنال ورودی در حوزه زمان (به صورت نمونه های گسسته در زمان)، آرگومان دوم L و آرگومان سوم M می باشد. این عمل در واقع برابر دو عمل جداگانه افزایش و کاهش نرخ، با نسبت نرخ های داده شده، می باشد.
Wavwr
در این فایل هدف خواندن یک فایل صوتی به کمک دستور wavread و سپس اجرای آن توسط دستور wavplay می باشد . در دستور wavplay آرگومان اول نشان دهنده برداری است که می خواهیم اجرا شود و در آن ضریب ۵ برای افزایش شدت صوت استفاده شده است. آرگومان دوم دستور هم، نشان دهنده sampling rate مورد نظر برای اجرای فایل است. در نهایت دستور wavwrite برای ذخیره فایل با sampling rate و نام دلخواه استفاده می شود. توجه شود که این دستورات به صورت تدریجی در حال جایگزین شدن با دستور audioplayer و دستورات هم گروه آن (مانند audiorecorder) میباشد که در آمورش تصویری به صورت کامل به آنها پرداخته شده است.
Wavwr مثال
در این فایل هدف مشاهده عمل decimation بر روی شکل موج یک فایل صوتی در حوزه فرکانس است که مشاهده می شود با decimate با ضریب ۴ شکل موج در حوزه فرکانس به علت aliasing پیش آمده کمی خراب شده که با گوش کردن به فایل صوتی با دستور wavplay هم ملاحظه می شود که کیفیت فایل صوتی خروجی به وضوح کاهش یافته است. توجه شود که این دستورات به صورت تدریجی در حال جایگزین شدن با دستور audioplayer و دستورات هم گروه آن (مانند audiorecorder) میباشد که در آمورش تصویری به صورت کامل به آنها پرداخته شده است.
xcorr
در این برنامه، هدف نشان دادن تابع Cross Correlation دو تابع a و b است که توسط دستور xcorr انجام می شود. در ضمن برای نمایش توابع a و b و هم حاصل cross correlation آن ها در این برنامه از subplot استفاده شده است، بدین صورت که در subplot بالا هر دو تابع روی هم رسم شده و در subplot پایین حاصل rossc correlation آن دو رسم شده است
@Matlab_Communication
توابع پرکاربرد مخابراتی 👇بخش پنجم
---------------------------------------------
ورودی های تابع subplot نیز به این صورت عمل می کنند که ورودی اول نشان دهنده تعداد سطر و ورودی دوم، تعداد ستون است و ورودی سوم نشان می دهد که می خواهیم شکل مورد نظر در کدام subplot رسم شود.
xcov
دراین برنامه، هدف نشان دادن تابع covariance دو تابع a و b است که توسط دستور xcov انجام می شود. تابع کوواریانس همچون کورولیشن است با این تفاوت که مقدار میانگین سیگنال ها از آن کم می شود و این باعث می شود که خروجی دارای بایاس نباشد.
xcov مثال
در این فایل هدف بررسی این نکته است که covariance دو تابع حاصلش با cross correlation آن دو تابع پس از کم کردن میانگین هر کدام از آن دو تابع برابر است برای این منظور ابتدا تابع covariance به کمک دستورxcov محاسبه شده و سپس cross correlation به کمک دستور xcorr ، ولیکن پس از کم کردن میانگین دو تابع محاسبه شده، ملاحظه می شود حاصل یکی است.
filter مثال
هدف این برنامه فیلتر کردن یک سیگنال ورودی می باشد. برای این منظور از دستور
filter(b,a,x)
استفاده شده که در آن b ضرایب صورت فیلتر، a نیز ضرایب مخرج فیلتر و x سیگنالی است که می خواهیم فیلتر شود. ملاحظه می شود که پس از اعمال فیلتر تنها جمله مربوط به فرکانس پایین تر باقی می ماند. یعنی از سیگنالی که جمع دو سینوسی با ضرایب آرگومان ۳t و ۴۰t بود، تنها سیگنال با فرکانس پایین، باقی ماند. توجه شود که عملیات فیلتر کردن با دستور filtfilt نیز قابل اجراست (تغییر در فاز).
درصورت طراحی یک فیلتر تمام قطب، بردار b برابر با یک و در صورت طراحی یک فیلتر تمام صفر (فیلتر FIR) بردار a برابر با یک قرار داده میشود.
توجه شود که دستور filter معادل با xcorr پاسخ ضربه فیلتر در سیگنال ورودی میباشد.
Filter_butter_wx
در این برنامه، می خواهیم اثر اعمال یک فیلتر Butterworth بر روی یک سیگنال تصادفی تولید شده را از روی طیف فرکانسی، بررسی کنیم. برای این منظور ابتدا یک سیگنال تصادفی x تولید شده و طیف فرکانسی آن رسم می شود، سپس با دستور butter ابتدا درجه فیلتر و بعد فرکانس قطع آن (که باید به صورت نرمالیزه از صفر تا یک باشد) را تعیین می کنیم تا ضرایب a , b فیلتر را به ما بدهد و سپس با دستور filter سیگنال را فیلتر کرده و طیف فرکانسی آن را رسم می کنیم و ملاحظه میشود تنها بازه فرکانسی مورد نظر از طیف سیگنال باقی مانده است.
tf2zpk
در این فایل، دو روش محاسبه صفر و قطب های یک تابع سیستم از روی ضرایب صورت و مخرج تابع تبدیلش نمایش داده شده است.
فرم کلی تابع سیستم را می توان بصورت زیر نمایش داد.
در روش نخست ضرایب داده شده است. همانگونه که از رابطه فوق مشاهده می شود، ضرایب a و b، ضرایب یک چندجمله ای هستند. بنابراین با استفاده از تابع ()root، می توان ریشه های این دو چندجمله ای را که همان صفر و قطب های تابع سیستم گسسته در زمان هستند، مشخص نمود.
در روش دوم می توان با استفاده از تابع tf2zpk مستقیماً از ضرایب داده شده، صفرها، قطب ها و بهره سیستم گسسته در زمان را مشخص کرد.
@Matlab_Communication
---------------------------------------------
ورودی های تابع subplot نیز به این صورت عمل می کنند که ورودی اول نشان دهنده تعداد سطر و ورودی دوم، تعداد ستون است و ورودی سوم نشان می دهد که می خواهیم شکل مورد نظر در کدام subplot رسم شود.
xcov
دراین برنامه، هدف نشان دادن تابع covariance دو تابع a و b است که توسط دستور xcov انجام می شود. تابع کوواریانس همچون کورولیشن است با این تفاوت که مقدار میانگین سیگنال ها از آن کم می شود و این باعث می شود که خروجی دارای بایاس نباشد.
xcov مثال
در این فایل هدف بررسی این نکته است که covariance دو تابع حاصلش با cross correlation آن دو تابع پس از کم کردن میانگین هر کدام از آن دو تابع برابر است برای این منظور ابتدا تابع covariance به کمک دستورxcov محاسبه شده و سپس cross correlation به کمک دستور xcorr ، ولیکن پس از کم کردن میانگین دو تابع محاسبه شده، ملاحظه می شود حاصل یکی است.
filter مثال
هدف این برنامه فیلتر کردن یک سیگنال ورودی می باشد. برای این منظور از دستور
filter(b,a,x)
استفاده شده که در آن b ضرایب صورت فیلتر، a نیز ضرایب مخرج فیلتر و x سیگنالی است که می خواهیم فیلتر شود. ملاحظه می شود که پس از اعمال فیلتر تنها جمله مربوط به فرکانس پایین تر باقی می ماند. یعنی از سیگنالی که جمع دو سینوسی با ضرایب آرگومان ۳t و ۴۰t بود، تنها سیگنال با فرکانس پایین، باقی ماند. توجه شود که عملیات فیلتر کردن با دستور filtfilt نیز قابل اجراست (تغییر در فاز).
درصورت طراحی یک فیلتر تمام قطب، بردار b برابر با یک و در صورت طراحی یک فیلتر تمام صفر (فیلتر FIR) بردار a برابر با یک قرار داده میشود.
توجه شود که دستور filter معادل با xcorr پاسخ ضربه فیلتر در سیگنال ورودی میباشد.
Filter_butter_wx
در این برنامه، می خواهیم اثر اعمال یک فیلتر Butterworth بر روی یک سیگنال تصادفی تولید شده را از روی طیف فرکانسی، بررسی کنیم. برای این منظور ابتدا یک سیگنال تصادفی x تولید شده و طیف فرکانسی آن رسم می شود، سپس با دستور butter ابتدا درجه فیلتر و بعد فرکانس قطع آن (که باید به صورت نرمالیزه از صفر تا یک باشد) را تعیین می کنیم تا ضرایب a , b فیلتر را به ما بدهد و سپس با دستور filter سیگنال را فیلتر کرده و طیف فرکانسی آن را رسم می کنیم و ملاحظه میشود تنها بازه فرکانسی مورد نظر از طیف سیگنال باقی مانده است.
tf2zpk
در این فایل، دو روش محاسبه صفر و قطب های یک تابع سیستم از روی ضرایب صورت و مخرج تابع تبدیلش نمایش داده شده است.
فرم کلی تابع سیستم را می توان بصورت زیر نمایش داد.
در روش نخست ضرایب داده شده است. همانگونه که از رابطه فوق مشاهده می شود، ضرایب a و b، ضرایب یک چندجمله ای هستند. بنابراین با استفاده از تابع ()root، می توان ریشه های این دو چندجمله ای را که همان صفر و قطب های تابع سیستم گسسته در زمان هستند، مشخص نمود.
در روش دوم می توان با استفاده از تابع tf2zpk مستقیماً از ضرایب داده شده، صفرها، قطب ها و بهره سیستم گسسته در زمان را مشخص کرد.
@Matlab_Communication
توابع پرکاربرد مخابراتی 👇بخش ششم
---------------------------------------------
[Z,P,K] = tf2zpk(b,a);
ورودی های این تابع، ضرایب چندجمله ای های صورت و مخرج تابع سیستم و خروجی های این تابع، صفرها، قطب ها و بهره سیستم گسسته در زمان هستند.
در این فایل از دستور
[Z,P,K] = tf2zpk(b,a);
استفاده شده است که a و b به ترتیب ضرایب z در صورت و مخرج می باشد. در خروجی تابع z نشان دهنده صفرهای تابع تبدیل، p قطبهای تابع تبدیل و k نشانگر ضریب تابع تبدیل می باشد.
zp2tf_tf2zp
در این فایل، عکس عملیات فایل قبلی مد نظر است. یعنی با داشتن صفر و قطب های تابع تبدیل سیستم، ضرایب صورت و مخرج را به دست آورده ایم و سپس مجددا از روی آنها صفر و قطب ها را به دست آورده و با صفر و قطب هایی که در ابتدا داشتیم، مقایسه کرده ایم که شاهد مطابقت آن ها بر روی هم هستیم.
حال اگر بخواهیم صفر و قطب های یک سیستم را در صفحه z نمایش دهیم از دستور zplane استفاده مینماییم. ورودی های این دستور می توانند ضرایب چندجمله ای های صورت و مخرج و یا صفر و قطب های موجود در یک تابع سیستم باشند و در حقیقت، نتیجه نمایش داده شده با استفاده از این دو نوع ورودی یکسان است.
residuez
می توانیم تابع سیستم را به کسرهای جزیی بسط داده و بصورت زیر نمایش دهیم. در این صورت، تابع سیستم با استفاده از ضرایب موجود در بردارهای r و p و k مشخص می شوند.
تبدیل ضرایب a و b به ضرایب موجود در بسط کسرهای جزیی با استفاده از تابع residuez انجام میشود. با استفاده از این تابع می توان ضرایب r و p و k را به ضرایب تبدیل نمود که در این صورت از دستور
[b,a] = residuez(r,p,k)
استفاده می شود.
freqz مثال
فیلتر باترورث مرتبه ۹ با فرکانس قطع ۰٫۴ طراحی شده و ضرایب a و b متناظر با تابع سیستم آن بدست می آید.
@Matlab_Communication
---------------------------------------------
[Z,P,K] = tf2zpk(b,a);
ورودی های این تابع، ضرایب چندجمله ای های صورت و مخرج تابع سیستم و خروجی های این تابع، صفرها، قطب ها و بهره سیستم گسسته در زمان هستند.
در این فایل از دستور
[Z,P,K] = tf2zpk(b,a);
استفاده شده است که a و b به ترتیب ضرایب z در صورت و مخرج می باشد. در خروجی تابع z نشان دهنده صفرهای تابع تبدیل، p قطبهای تابع تبدیل و k نشانگر ضریب تابع تبدیل می باشد.
zp2tf_tf2zp
در این فایل، عکس عملیات فایل قبلی مد نظر است. یعنی با داشتن صفر و قطب های تابع تبدیل سیستم، ضرایب صورت و مخرج را به دست آورده ایم و سپس مجددا از روی آنها صفر و قطب ها را به دست آورده و با صفر و قطب هایی که در ابتدا داشتیم، مقایسه کرده ایم که شاهد مطابقت آن ها بر روی هم هستیم.
حال اگر بخواهیم صفر و قطب های یک سیستم را در صفحه z نمایش دهیم از دستور zplane استفاده مینماییم. ورودی های این دستور می توانند ضرایب چندجمله ای های صورت و مخرج و یا صفر و قطب های موجود در یک تابع سیستم باشند و در حقیقت، نتیجه نمایش داده شده با استفاده از این دو نوع ورودی یکسان است.
residuez
می توانیم تابع سیستم را به کسرهای جزیی بسط داده و بصورت زیر نمایش دهیم. در این صورت، تابع سیستم با استفاده از ضرایب موجود در بردارهای r و p و k مشخص می شوند.
تبدیل ضرایب a و b به ضرایب موجود در بسط کسرهای جزیی با استفاده از تابع residuez انجام میشود. با استفاده از این تابع می توان ضرایب r و p و k را به ضرایب تبدیل نمود که در این صورت از دستور
[b,a] = residuez(r,p,k)
استفاده می شود.
freqz مثال
فیلتر باترورث مرتبه ۹ با فرکانس قطع ۰٫۴ طراحی شده و ضرایب a و b متناظر با تابع سیستم آن بدست می آید.
@Matlab_Communication