آشنائی با مفاهیم پایه ای مخابرات.pdf
295.1 KB
@Matlab_Communication
آشنائی با مفاهیم پایه ای مخابرات
فایل PDF بالا👆
به همراه مثالهای کاربردی در زندگی روزمره
عناوین :
شرح ساده میدان الکترومناطیسی.
شرح پالس ضربه و EMP و EMB
شرح مدولاسیون و انواع آن.
شرح باندهای فرکانسی مختلف.
شرح فرآیندهای تصادفی و انواع آن
شرح نویز و نرخ سیگنال به نویز.
شرح آشکارسازی سیگنال.
شرح تابع همبستگی کرولِیشن.
شرح ساده کانولوشن.
@Matlab_Communication
آشنائی با مفاهیم پایه ای مخابرات
فایل PDF بالا👆
به همراه مثالهای کاربردی در زندگی روزمره
عناوین :
شرح ساده میدان الکترومناطیسی.
شرح پالس ضربه و EMP و EMB
شرح مدولاسیون و انواع آن.
شرح باندهای فرکانسی مختلف.
شرح فرآیندهای تصادفی و انواع آن
شرح نویز و نرخ سیگنال به نویز.
شرح آشکارسازی سیگنال.
شرح تابع همبستگی کرولِیشن.
شرح ساده کانولوشن.
@Matlab_Communication
🔘نوشتن اطلاعات درون یک فایل متنی، با دستور fprintf در متلب
🔸با استفاده از دستور fprintf در متلب، میتوانیم اطلاعات مورد نظرمان را درون یک فایل متنی بنویسیم. برای این منظور، ابتدا باید با دستور fopen فایل متنی را باز کرده، سپس با دستور fprintf اطلاعات مورد نظرمان را درون فایل متنی بنویسیم و در آخر، با دستور fclose فایل متنی را ببندیم.
🔻به مثال زیر توجه کنید:
clear all
close all
clc
x = 0:0.1:1;
fid = fopen('example.txt', 'w');
fprintf(fid, '%6.1f', x);
fclose(fid);
☝️دقت کنید که درون پرانتز دستور fopen حرف w نوشته شده است که حرف اول کلمه write میباشد. بنابراین به دستور fopen اعلام کرده ایم که قصد داریم که درون فایل، اطلاعاتی را بنویسیم. بنابراین، دستور fopen اگر فایل وجود دارد، آن را باز کرده و البته اطلاعات آن را هم پاک می کند (از نو نوشتن اطلاعات). اگر فایل مورد نظر وجود نداشته باشد، دستور fopen فایلی با این نام میسازد.
👈دستور fprintf برای نوشتن اطلاعات بردار x به درون فایل example.txt به کار رفته است. دومین آرگومان درون پرانتز دستور fprintf مربوط به شیوه نوشتن اطلاعات درون فایل متنی میباشد. مثلا با عبارت %6.1f تعیین کردهایم که عبارت مربوط به هر مقدار، با 6 کاراکتر نوشته شود و تعداد ارقام اعشاری نمایش داده شده هم برابر 1 باشد. یعنی مثلا برای عدد 1، ابتدا 3 کاراکتر فاصله درج میگردد و سپس عبارت 1.0 درج خواهد شد(در مجموع میشود 6 کاراکتر).
👈در آخر نیز با دستور fclose فایل متنی را بسته ایم.
✔️از برنامه بالا ران بگیرید و نتیجه را مشاهده نمایید. با تشکر🌹
🔸منبع: وبسایت کلیدستان
《دوستان خود را فرا بخوانید🌹》
________________________________
🔴کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
________________________________
🔴لینک سوپر گروه تخصصی متلب بالای همین کانال پین شده است.
🔸با استفاده از دستور fprintf در متلب، میتوانیم اطلاعات مورد نظرمان را درون یک فایل متنی بنویسیم. برای این منظور، ابتدا باید با دستور fopen فایل متنی را باز کرده، سپس با دستور fprintf اطلاعات مورد نظرمان را درون فایل متنی بنویسیم و در آخر، با دستور fclose فایل متنی را ببندیم.
🔻به مثال زیر توجه کنید:
clear all
close all
clc
x = 0:0.1:1;
fid = fopen('example.txt', 'w');
fprintf(fid, '%6.1f', x);
fclose(fid);
☝️دقت کنید که درون پرانتز دستور fopen حرف w نوشته شده است که حرف اول کلمه write میباشد. بنابراین به دستور fopen اعلام کرده ایم که قصد داریم که درون فایل، اطلاعاتی را بنویسیم. بنابراین، دستور fopen اگر فایل وجود دارد، آن را باز کرده و البته اطلاعات آن را هم پاک می کند (از نو نوشتن اطلاعات). اگر فایل مورد نظر وجود نداشته باشد، دستور fopen فایلی با این نام میسازد.
👈دستور fprintf برای نوشتن اطلاعات بردار x به درون فایل example.txt به کار رفته است. دومین آرگومان درون پرانتز دستور fprintf مربوط به شیوه نوشتن اطلاعات درون فایل متنی میباشد. مثلا با عبارت %6.1f تعیین کردهایم که عبارت مربوط به هر مقدار، با 6 کاراکتر نوشته شود و تعداد ارقام اعشاری نمایش داده شده هم برابر 1 باشد. یعنی مثلا برای عدد 1، ابتدا 3 کاراکتر فاصله درج میگردد و سپس عبارت 1.0 درج خواهد شد(در مجموع میشود 6 کاراکتر).
👈در آخر نیز با دستور fclose فایل متنی را بسته ایم.
✔️از برنامه بالا ران بگیرید و نتیجه را مشاهده نمایید. با تشکر🌹
🔸منبع: وبسایت کلیدستان
《دوستان خود را فرا بخوانید🌹》
________________________________
🔴کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
________________________________
🔴لینک سوپر گروه تخصصی متلب بالای همین کانال پین شده است.
🔘محاسبه انتگرال معین با دستور quad در متلب
🔻در نرم افزار متلب انتگرال معین هر تابع را میتوان با دستور quad(y,min,max) و با روش های عددی محاسبه کرد.
👈در دستور فوق y تابع پارامتری، min حد پایین انتگرال و max حد بالای انتگرال است.
✔️نکته قابل توجه این است که عملگرهای مورد استفاده باید با . همراه شوند مثلا به جای * باید از *. استفاده کرد. در مثال زیر میخواهیم انتگرال تابع sin(x) را در بازه صفر تا pi بیابیم (در اینجا نمیتوان از دستور syms استفاده کرد بلکه از نماد ' ' برای تعریف تابع استفاده میشود):
y='sin(x)';
z=quad(y,0,pi)
________________________
🔴کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
____________________________
🔴لینک سوپر گروه تخصصی متلب بالای همین کانال پین شده است.
🔻در نرم افزار متلب انتگرال معین هر تابع را میتوان با دستور quad(y,min,max) و با روش های عددی محاسبه کرد.
👈در دستور فوق y تابع پارامتری، min حد پایین انتگرال و max حد بالای انتگرال است.
✔️نکته قابل توجه این است که عملگرهای مورد استفاده باید با . همراه شوند مثلا به جای * باید از *. استفاده کرد. در مثال زیر میخواهیم انتگرال تابع sin(x) را در بازه صفر تا pi بیابیم (در اینجا نمیتوان از دستور syms استفاده کرد بلکه از نماد ' ' برای تعریف تابع استفاده میشود):
y='sin(x)';
z=quad(y,0,pi)
________________________
🔴کانال تخصصی متلب:👇👇
•┄✺ೋ🌹✺┄•
@matlab_communication
____________________________
🔴لینک سوپر گروه تخصصی متلب بالای همین کانال پین شده است.
⁉️پرسش
سلام خدمت دوستان همگروهیِ متلب. کسی کد مثال 1 موجود در ضمیمه همین پیام رو در متلب بلده؟ ممنون میشم راهنمایی کنید🙏
✅پاسخِ ادمینهای گروه متلب:
سلام دوست عزیز
function myint(a,b,n)
h=(b-a)/n;
s=0;
r=a;
for i=1:n
k=r^r+r;
s=s+k*h;
r=r+h;
end
end
s
✔️منبع: گروه ۴۰۰۰ نفری تخصصی پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
سلام خدمت دوستان همگروهیِ متلب. کسی کد مثال 1 موجود در ضمیمه همین پیام رو در متلب بلده؟ ممنون میشم راهنمایی کنید🙏
✅پاسخِ ادمینهای گروه متلب:
سلام دوست عزیز
function myint(a,b,n)
h=(b-a)/n;
s=0;
r=a;
for i=1:n
k=r^r+r;
s=s+k*h;
r=r+h;
end
end
s
✔️منبع: گروه ۴۰۰۰ نفری تخصصی پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
⁉️پرسش
سلام دوستان لطفاً به تصویر ضمیمه شده یه نگاهی بندازید. اگه محدوده تغییرات از ۰ تا ۱ باشه کد این نمودار در متلب چی میشه؟ تشکر🙏🌹🙏
✅پاسخ از طرف ادمینهای گروه چهار هزار نفری متلب:
سلام. کدش بصورت زیر هست👇👇
clc
clear
x=[0:0.0001:1];
f1=(-2/(pi^2))*x+(8/(3*(pi^2)))*sin(pi*x);
f2=(1/(pi^2))*(cos(pi*x)-1);
plot(x,f1);
hold on
plot(x,f2,'r')
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
سلام دوستان لطفاً به تصویر ضمیمه شده یه نگاهی بندازید. اگه محدوده تغییرات از ۰ تا ۱ باشه کد این نمودار در متلب چی میشه؟ تشکر🙏🌹🙏
✅پاسخ از طرف ادمینهای گروه چهار هزار نفری متلب:
سلام. کدش بصورت زیر هست👇👇
clc
clear
x=[0:0.0001:1];
f1=(-2/(pi^2))*x+(8/(3*(pi^2)))*sin(pi*x);
f2=(1/(pi^2))*(cos(pi*x)-1);
plot(x,f1);
hold on
plot(x,f2,'r')
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
⁉️پرسش
سلام دوستان این سریال رو موقع نصب چجوری برطرف کنم؟ آیا سریال خاصی داره؟ سپاس از توجه شما🙏
✅پاسخِ ادمینهای گروه چهار هزار نفری متلب
سلام دوست عزیز:
کد standalone رو بزنید و مراحل نصب رو تکمیل کنید بعد از اتمام نصب فایل .dll رو در پوشه bin-win64 و فایل .lic رو در پوشه license کپی کنید و اجرا کنید.
👈البته اگر patch داره اونو تو میسر نصب نرم افزار کپی و اجرا کنید تا کرک شه
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
سلام دوستان این سریال رو موقع نصب چجوری برطرف کنم؟ آیا سریال خاصی داره؟ سپاس از توجه شما🙏
✅پاسخِ ادمینهای گروه چهار هزار نفری متلب
سلام دوست عزیز:
کد standalone رو بزنید و مراحل نصب رو تکمیل کنید بعد از اتمام نصب فایل .dll رو در پوشه bin-win64 و فایل .lic رو در پوشه license کپی کنید و اجرا کنید.
👈البته اگر patch داره اونو تو میسر نصب نرم افزار کپی و اجرا کنید تا کرک شه
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
⁉️پرسش
سلام خدمت همه اعضای گروه تخصصی متلب. کد این عکس رو با چه دستوری بنویسم؟ اگه هدف از عدد ۱ تا N باشه؟ ممنون🙏
✅پاسخ: از کد زیر استفاده کنید👇👇
PRD=sqrt((sum((Xorg-Xrec).^2)/sum(Xorg.^2))*100;
یه input بنویسید و ورودیش رو ماتریس وارد کنید. [10 3;15 2;14.5 3]
تعداد N به تعداد ایندکس بردارهاس. از symsum هم نمیتونید برای ایندکسدهی استفاده کنید.
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
سلام خدمت همه اعضای گروه تخصصی متلب. کد این عکس رو با چه دستوری بنویسم؟ اگه هدف از عدد ۱ تا N باشه؟ ممنون🙏
✅پاسخ: از کد زیر استفاده کنید👇👇
PRD=sqrt((sum((Xorg-Xrec).^2)/sum(Xorg.^2))*100;
یه input بنویسید و ورودیش رو ماتریس وارد کنید. [10 3;15 2;14.5 3]
تعداد N به تعداد ایندکس بردارهاس. از symsum هم نمیتونید برای ایندکسدهی استفاده کنید.
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
⁉️پرسش
سلام. دوستان کسی میدونه چجوری باید قطر اصلیه یه ماتریس رو یک کرد؟
✅پاسخ: اگر ماتریس n*n باشه👇👇👇
a(1:n+1:end)=1
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
سلام. دوستان کسی میدونه چجوری باید قطر اصلیه یه ماتریس رو یک کرد؟
✅پاسخ: اگر ماتریس n*n باشه👇👇👇
a(1:n+1:end)=1
✔️منبع: سوپر گروه تخصصی ۴۰۰۰ نفری پرسش و پاسخ متلب.
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
#سوالات
••••••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••••••
👌1
Forwarded from کانال تخصصی متلب
حل تمارین پایان فصل درس های :
۱- تئوری مخابرات پیشرفته(مخ.دیجیتال)
۲- درس فرآیندهای تصادفی
* به صورت دستنویس با توضیحات فارسی
به همراه مفاهیم پایه ای دروس سیگنال سیستم - آمار و احتمالات مهندسی - خلاصه فرمولها و تکالیف متلب
جهت دریافت فایلها به ادمین کانال پیام بدید .
@alimoradi_on
@Matlab_Communication
۱- تئوری مخابرات پیشرفته(مخ.دیجیتال)
۲- درس فرآیندهای تصادفی
* به صورت دستنویس با توضیحات فارسی
به همراه مفاهیم پایه ای دروس سیگنال سیستم - آمار و احتمالات مهندسی - خلاصه فرمولها و تکالیف متلب
جهت دریافت فایلها به ادمین کانال پیام بدید .
@alimoradi_on
@Matlab_Communication
Media is too big
VIEW IN TELEGRAM
🎞فیلم آموزشی تبدیل خودکار کدها و توابع متلب به C یا ++C
#تبدیل
🎞Convert Matlab Code to C and C++
🔴کانال تخصصی متلب:👇👇
@matlab_communication
#تبدیل
🎞Convert Matlab Code to C and C++
🔴کانال تخصصی متلب:👇👇
@matlab_communication
Forwarded from Masoud Noori
clc
clear all
n=800;
A=1.995653;
B=1.27689;
C=8;
r=linspace(0,1,n);
theta=linspace(-2,20*pi,n);
[R,THETA]=ndgrid(r,theta);
% define the number of petals we want percycle.Roses have 3 and a bit.
petalNum=3.6;
x=1-(1/2)*((5/4)*(1-mod(petalNum*THETA,2*pi)/pi).^2-1/4).^2;
phi=(pi/2)*exp(-THETA/(C*pi));
y=A*(R.^2).*(B*R-1).^2.*sin(phi);
R2=x.*(R.*sin(phi))+y.*cos(phi);
X=R2.*sin(THETA);
Y=R2.*cos(THETA);
Z=x.*(R.*cos(phi))-y.*sin(phi);
% % define a red map for our rose colouring
red_map=linspace(1,0.25,10);
red_map(:,2)=0;
red_map(:,3)=0;
clf
surf(X,Y,Z,'linestyle','none')
view([-40.50 42.00])
colormap(red_map)
برنامه گل رز در متلب👆
عید قربان رو با تقدیم این گل رز به همه تبریک میگم.
clear all
n=800;
A=1.995653;
B=1.27689;
C=8;
r=linspace(0,1,n);
theta=linspace(-2,20*pi,n);
[R,THETA]=ndgrid(r,theta);
% define the number of petals we want percycle.Roses have 3 and a bit.
petalNum=3.6;
x=1-(1/2)*((5/4)*(1-mod(petalNum*THETA,2*pi)/pi).^2-1/4).^2;
phi=(pi/2)*exp(-THETA/(C*pi));
y=A*(R.^2).*(B*R-1).^2.*sin(phi);
R2=x.*(R.*sin(phi))+y.*cos(phi);
X=R2.*sin(THETA);
Y=R2.*cos(THETA);
Z=x.*(R.*cos(phi))-y.*sin(phi);
% % define a red map for our rose colouring
red_map=linspace(1,0.25,10);
red_map(:,2)=0;
red_map(:,3)=0;
clf
surf(X,Y,Z,'linestyle','none')
view([-40.50 42.00])
colormap(red_map)
برنامه گل رز در متلب👆
عید قربان رو با تقدیم این گل رز به همه تبریک میگم.
سوالات متلب.pdf
378.3 KB
✍️سوالات چهار گزینه ای متلب به همراه پاسخنامه
🔸تعداد سوالات: ۱۰۰
🔸فرمت PDF
🔸زبان: فارسی
✔️منبع: mathworks.ir
✔️لینک گروه متلب در بالای همین کانال پین(سنجاق) شده است.
••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••
🔸تعداد سوالات: ۱۰۰
🔸فرمت PDF
🔸زبان: فارسی
✔️منبع: mathworks.ir
✔️لینک گروه متلب در بالای همین کانال پین(سنجاق) شده است.
••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••
پردازش صوت.pdf
565.9 KB
✍️مقاله فارسی پردازش صوت به همرا کد متلب از دانشگاه صنعتی شریف
✔️لینک گروه متلب در بالای کانال پین(سنجاق) شده است.
••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••
✔️لینک گروه متلب در بالای کانال پین(سنجاق) شده است.
••••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
••••••••••••••••••••••••••••••••••••••••••••
جزوه متلب.rar
14.6 MB
✍️جزوه دستنویس متلب با کیفیت عالی
👈ارسالی از طرف آقای نیکنام🙏
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
•••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
•••••••••••••••••••••••••••••••••••••••••••
👈ارسالی از طرف آقای نیکنام🙏
✔️لینک گروه در بالای کانال پین(سنجاق) شده است.
•••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
•••••••••••••••••••••••••••••••••••••••••••
⁉️پرسش
سلام و خدا قوت. ممنون میشم اگه چگونگی ساخت ماتریس هیلبرت رو در متلب توضیح مختصری بدین🙏🙏
✅پاسخ:
سلام وقت بخیر
ساخت ماتریس هیلبرت (Hilbert Matrix) درجه n با دستور hilb در متلب
🔶برای ساخت ماتریس هیلبرت درجه n در متلب باید دستور hilb را به صورت زیر به کار ببریم:
H = hilb(n)
🔹لطفاً به مثال زیر توحه کنید:
ساخت ماتریس هیلبرت درجه 5:
clear all;
close all;
clcH = hilb(5)
👈توجه: تمامی سوالات از طرف اعضا در گروه مطرح میشود و پاسخها از طرف سایر اعضا گرامی و ادمینهای محترم گروه داده میشود. با تشکر از این عزیزان🙏
✔️منبع: سوپر گروه تخصصی پرسش و پاسخ متلب.
#سوالات
•••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
•••••••••••••••••••••••••••••••••••••••••••
سلام و خدا قوت. ممنون میشم اگه چگونگی ساخت ماتریس هیلبرت رو در متلب توضیح مختصری بدین🙏🙏
✅پاسخ:
سلام وقت بخیر
ساخت ماتریس هیلبرت (Hilbert Matrix) درجه n با دستور hilb در متلب
🔶برای ساخت ماتریس هیلبرت درجه n در متلب باید دستور hilb را به صورت زیر به کار ببریم:
H = hilb(n)
🔹لطفاً به مثال زیر توحه کنید:
ساخت ماتریس هیلبرت درجه 5:
clear all;
close all;
clcH = hilb(5)
👈توجه: تمامی سوالات از طرف اعضا در گروه مطرح میشود و پاسخها از طرف سایر اعضا گرامی و ادمینهای محترم گروه داده میشود. با تشکر از این عزیزان🙏
✔️منبع: سوپر گروه تخصصی پرسش و پاسخ متلب.
#سوالات
•••••••••••••••••••••••••••••••••••••••••••
🔴کانال تخصصی متلب:👇👇
@matlab_communication
•••••••••••••••••••••••••••••••••••••••••••