کانال تخصصی متلب – Telegram
کانال تخصصی متلب
7.13K subscribers
247 photos
112 videos
1.03K files
162 links
👈 فایل‌های آموزشی متلب در حوزه:
مخابرات،کنترل،پردازش سیگنال،عمران،هوافضا، ریاضی،فیزیک

کانال۷۵۰۰ نفره متلب:
@Matlab_Communication

گروه ۶۵۰۰ نفره متلب:
t.me/joinchat/EHEbrEA6SZ1bAjLdUj7bwA

ادمین‌:
@add_and_removal
تاسیس۹۵/۱۱/۱۱
Download Telegram
☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️☝️
اشتباها بعضی از مطالب با لینک سابق برچسب خورده اند.

لینک های جدید " کانال و گروه " در بنر بالا وجود دارد .
با عرض پوزش از دوستان به جهت ارسال چند پیام تکراری .
با سلام
به مدت یک هفته تبلیغات گروه ها و کانالهای علمی در کانال زیر به صورت آزاد و بدون تبادل انجام میشود .

در صورت تمایل به ما اطلاع دهید

آدرس ما :
@Introduction_ChannelsAndGroups
simulink-control-matlab.pptx1783101664.pptx
3.2 MB
☝️☝️☝️☝️☝️☝️☝️☝️

آموزش سیمولینک در متلب

از اسلاید 30 به بعد به معرفی بلوک ها پرداخته شده است


@Matlab_Communication
4_6019212514326216962.pdf
1.4 MB
☝️☝️☝️☝️☝️☝️☝️☝️

آموزش شبیه سازی SIMPOWER (برق قدرت) در محیط سیمولینک متلب


@Matlab_Communication
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
Forwarded from Deleted Account
MMS-HW1-SpringSemester2014.pdf
611.3 KB
آشنایی با مفاهیم نمونه برداری و تداخل و سطح بندی در پردازش صوت

"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&gt;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)

دستورات برنامه نویسی

حلقه ها

&lt;/pre&gt;
for i=start : end

دستورات

end

while(شرط)

دستورات

end

if(شرط)

دستورات

end

 

اجرای برنامه تا فشردن یک کلید متوقف می­ماند:

pause

اجرای برنامه به مدت n ثانیه متوقف می­ماند:

pause(n)

در عبارت زیر اولین گروه از دستورات اجرا می­شوند. اگر خطایی رخ دهد اجرای این دستورات متوقف شده و دومین گروه از دستورات اجرا می­شود.

try&lt;/pre&gt;
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
توابع پرکاربرد مخابراتی 👇بخش دوم
--------------------------------------------
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