سیستم آبجکت

انتشار سیگنال ها در کانال چند مسیره

شرح

سیستم آبجکت phased. MultipathChannel ، یک سیگنال را از طریق یک کانال چند مسیره منتشر می کند. برای اجرای این آبجکت شما باید خصوصیات را برای هر مسیر قید کنید: تأخیر زمانی، بهره، عامل داپلر، افت بازتاب و افت پراکندگی.

برای کاربردهای سونار، شما می توانید از سیستم آبجکت phased.IsoSpeedUnderwaterPaths برای تولید خصوصیات مسیر کانال استفاده کنید. شما می توانید این خصوصیات را به طور مستقل فراهم کنید.

برای مدلسازی انتشار سیگنال از طریق یک کانال چندمسیره:

  1. منتشرکننده را تعریف و تنظیم کنید. شما می توانید ویژگی های phased.MultipathChannel را در زمان ساخت تعیین کنید یا آن ها را روی مقادیر پیش فرض رها کنید. بخش ساختار را ببینید. بعضی ویژگی ها که شما در زمان ساخت تعیین می کنید را می توان بعداً تغییر داد. این ویژگی ها قابل تنظیم هستند.
  2. برای محاسبه سیگنال منتشر شده، روش step را از phased.MultipathChannel فراخوانی نمایید. خروجی روش step به ویژگی های سیستم آبجکت phased. MultipathChannel بستگی دارد. شما در هر زمانی می توانید ویژگی های قابل تنظیم را تغییر دهید.

توجه: به جای استفاده از روش step برای اجرای عملیات تعریف شده توسط این سیستم آبجکت، در صورتیکه یک تابع وجود داشته باشد، شما می توانید شیء را با شناسه ها (آرگومان ها) فراخوانی کنید. برای مثال، y = step(obj,x) و y = obj(x) عملیات یکسانی را اجرا می کنند.

ساختار

propagator = phased.MultipathChannel یک سیستم آبجکت انتشار سیگنال برای یک کانال زیر آب چندمسیره ایجاد می کند.

propagator = phased.MultipathChannel (Name,Value) یک سیستم آبجکت انتشار سیگنال ایجاد می کند که هر ویژگی خاص Name در یک Value خاص قرار می گیرد. شما می توانید شناسه های جفتی اسم و مقدار دیگری را با هر ترتیبی بصورت (Name1,Value1,…,NameN,ValueN) تعیین کنید.

 

 

ویژگی ها

OperatingFrequency –فرکانس حامل سیگنال

20e3 (پیشفرض) | اسکالر با مقدار حقیقی مثبت

فرکانس حامل سیگنال، تعیین شده بعنوان یک اسکالر با مقدار حقیقی مثبت. واحدها به Hz هستند.

مثال: 10000

نوع داده ها: double

SampleRate – نرخ نمونه برداری سیگنال
1e3 (پیشفرض) | اسکالر با مقدار حقیقی مثبت

نرخ نمونه برداری سیگنال، تعیین شده بعنوان یک اسکالر با مقدار حقیقی مثبت. واحدها به Hz هستند. این سیستم آبجکت این کمیت را برای محاسبه تأخیر انتشار در واحدهای نمونه ها استفاده می کند.

مثال: 3e3

نوع داده ها: double

MaximumDelaySource –منبع حداکثر تأخیر
‘Auto’ (پیشفرض) ‘Property’|

منبع مقدار تأخیر حداکثر، تعیین شده به صورت ‘Auto’ یا ‘Property’. زمانی که شما این ویژگی را روی ‘Auto’ تنظیم می کنید، کانال حافظه کافی را برای شبیه سازی تأخیر انتشار به طور خودکار تخصیص می دهد. زمانی که شما این ویژگی را روی ‘Property’ تنظیم می کنید، می توانید حداکثر تأخیر را با استفاده از ویژگی MaximumDelay تعیین کنید. سیگنال های رسیده بعد از تأخیر حداکثر نادیده گرفته می شوند.

MaximumDelay – حداکثر تأخیر سیگنال
1 (پیشفرض) | اسکالر مثبت

حداکثر تأخیر سیگنال، تعیین شده بصورت یک اسکالر مثبت. تأخیرهای بیشتر این مقدار نادیده گرفته می شوند. واحدها به ثانیه هستند.

وابستگی ها

برای فعالسازی این ویژگی، ویژگی MaximumDelaySource را روی ‘Property’ تنظیم کنید.

نوع داده ها: double

روش ها

تنظیم مجدد وضعیت سیستم آبجکت reset
انتشار سیگنال از طریق کانال صوتی چندمسیره step
مشترک در همه سیستم آبجکت ها
ایجاد سیستم آبجکت با مقادیر ویژگی مشابه clone
تعداد ورودی های مورد انتظار به یک سیستم آبجکت getNumInputs
تعداد خروجی های مورد انتظار از یک سیستم آبجکت getNumOutputs
بررسی وضعیت های قفل شده یک سیستم آبجکت (منطقی) isLocked
اجازه تغییرات در مقدار ویژگی سیستم آبجکت release

مثال ها

انتشار سیگنال یکطرفه در کانال صوتی زیرآب چندمسیره

ایجاد یک کانال صوتی زیر آب پنج مسیره و محاسبه ماتریس مسیر انتشار، عامل داپلر و اتلاف جذب. فرض کنید که این منبع ثابت است و دریافت کننده در جهت محور x به سمت منبع با سرعت km/h 20 حرکت می کند. فرض کنید که انتشار یکطرفه پیش فرض است.

ایجاد کانال و تعیین موقعیت های منبع و دریافت کننده و سرعت ها.

numpaths = 5;

channel = phased.IsoSpeedUnderwaterPaths(‘ChannelDepth’,200,’BottomLoss’,10, …

‘NumPathsSource’,’Property’,’NumPaths’,numpaths);

tstep = 1;

srcpos = [0;0;-160];

rcvpos = [100;0;-50];

speed = -20*1000/3600;

srcvel = [0;0;0];

rcvvel = [speed;0;0];

محاسبه ماتریس مسیر، عامل داپلر و افت ها.

[pathmat,dop,absloss] = channel(srcpos,rcvpos,srcvel,rcvvel,tstep);

ایجاد 500 نمونه از یک سیگنال Hz 100. فرض کنید همه این مسیرها سیگنال مشابه دارند. انتشار سیگنال ها به سمت دریافت کننده.

fs = 1e3;

nsamp = 500;

propagator = phased.MultipathChannel(‘OperatingFrequency’,10e3,’SampleRate’,fs);

t = [0:(nsamp-1)]’/fs;

sig0 = sin(2*pi*100*t);

sig = repmat(sig0,1,numpaths);

propsig = propagator(sig,pathmat,dop,absloss);

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

plot(t*1000,real(sum(propsig,2)))

xlabel(‘Time (millisec)’)

D:\Program Files\MATLAB\R2017a\help\examples\phased\win64\PropagateSignalOneWayInMultipathUnderwaterSoundChannelExample_01.png

انتشار سیگنال دوطرفه در کانال صوتی زیرآب چندمسیره

ایجاد یک کانال صوتی زیر آب هفت مسیره و نمایش ماتریس مسیر انتشار. فرض کنید که این منبع ثابت است و دریافت کننده در جهت محور x به سمت منبع با سرعت km/h 20 حرکت می کند. انتشار دوطرفه را فرض کنید.

speed = -20*1000/3600;

numpaths = 7;

csound = 1515.0;

channel = phased.IsoSpeedUnderwaterPaths(‘ChannelDepth’,200, …

‘PropagationSpeed’,csound,’BottomLoss’,10,’NumPathsSource’,’Property’, …

‘NumPaths’,numpaths,’TwoWayPropagation’,true);

tstep = 1;

srcpos = [0;0;-160];

tgtpos = [500;0;-50];

srcvel = [0;0;0];

tgtvel = [speed;0;0];

ماتریس مسیر، عامل داپلر، اتلاف و بازتاب هدف و زوایای انتقال.

[pathmat,dop,aloss,tgtangs,srcangs] = channel(srcpos,tgtpos,srcvel,tgtvel,tstep);

ایجاد یک سیگنال Hz 100 با 500 نمونه. فرض کنید که همه مسیرها دارای سیگنال مشابه ولی با دامنه های متفاوت هستند. سپس، سیگنال ها را به سمت هدف منتشر کرده و بازگردانید. شما می توانید از اطلاعات زاویه برای محاسبه هر وابستگی زاویه ای از منبع و پاسخ های هدف استفاده کنید. هر کانال می تواند یک دامنه متفاوت داشته باشد. این مثال از یک مدل کسینوسی ساده استفاده می کند.

fs = 1e3;

nsamp = 500;

propagator = phased.MultipathChannel(‘OperatingFrequency’,10e3,’SampleRate’,fs);

t = [0:(nsamp-1)]’/fs;

ampsrc = cosd(srcangs(2,:));

amptgt = cosd(tgtangs(2,:));

sig0 = sin(2*pi*100*t);

sig = repmat(sig0,1,numpaths);

amptotal = ampsrc.^2.*amptgt;

sig = bsxfun(@times,amptotal,sig);

بدلیل تأخیر انتشار متناهی، اولین تماس با منتشرکننده سیگنال را بازنمی گرداند. propagator را دوبار فراخوانی کنید تا به سیگنال بازگشتی دست یابید.

propsig = propagator(sig,pathmat,dop,aloss);

propsig = propagator(sig,pathmat,dop,aloss);

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

rng = rangeangle(srcpos,tgtpos);

tr = rng/csound;

plot((t+tr)*1000,real(sum(propsig,2)))

xlabel(‘Time (millisec)’)

D:\Program Files\MATLAB\R2017a\help\examples\phased\win64\TwoWaySignalPropagationInMultipathUnderwaterSoundChannelExample_01.png

انتشار صوت در کانال با داشتن تعداد مسیرهای ناشناخته

یک کانال صوتی زیر آب ایجاد کرده و سیگنال دریافتی ترکیبی را ترسیم کنید. به طور خودکار تعداد مسیرها را بیابید. فرض کنید که منبع ثابت است و دریافت کننده در جهت محور x با سرعت km/h 20 به سمت منبع حرکت می کند. انتشار یکطرفه پیش فرض را فرض کنید.

speed = -20*1000/3600;

channel = phased.IsoSpeedUnderwaterPaths(‘ChannelDepth’,200,’BottomLoss’,5, …

‘NumPathsSource’,’Auto’,’CoherenceTime’,5);

tstep = 1;

srcpos = [0;0;-160];

rcvpos = [500;0;-50];

srcvel = [0;0;0];

rcvvel = [speed;0;0];

محاسبه ماتریس مسیر، عامل داپلر و تلفات. منتشر کننده 51 مسیر خروجی را ارسال می کند ولی برخی مسیرها می توانند شامل مقادیر Nan باشند.

[pathmat,dop,absloss,rcvangs,srcangs] = channel(srcpos,rcvpos,srcvel,rcvvel,tstep);

یک سیگنال Hz 100 با 500 نمونه ایجاد کنید. فرض کنید که همه مسیرهای سیگنال مشابهی دارند. از یک سیستم آبجکت phased.MultipathChannel برای انتشار سیگنال ها به سمت دریافت کننده استفاده کنید. phased.MultipathChannel همه مسیرهای تولید شده توسط phased.IsoSpeedUnderwaterPaths را بعنوان ورودی می پذیرد اما مسیرهایی که مقادیر NaN دارند را نادیده می گیرد.

fs = 1e3;

nsamp = 500;

propagator = phased.MultipathChannel(‘OperatingFrequency’,10e3,’SampleRate’,fs);

t = [0:(nsamp-1)]’/fs;

sig0 = sin(2*pi*100*t);

numpaths = size(pathmat,2);

sig = repmat(sig0,1,numpaths);

propsig = propagator(sig,pathmat,dop,absloss);

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

plot(t*1000,real(sum(propsig,2)))

xlabel(‘Time (millisec)’)

D:\Program Files\MATLAB\R2017a\help\examples\phased\win64\PropagateSoundInChannelWithUnknownNumberOfPathsExample_01.png

انبساط داپلر سیگنال سونار

مقایسه طول های یک سیگنال منتشر شده هنگامی که سونار ثابت است، در مقایسه با زمانی که سونار حرکت می کند متفاوت است. در مورد دوم، سونار دارای سرعت شعاعی m/s 25 است که از هدف دور می شود. سیگنال را در جهت یک مسیر منفرد منتشر کنید.

تعریف پارامترهای سیستم: حداکثر دامنه بدون ابهام، وضوح دامنه مورد نیاز، فرکانس کاری و سرعت انتشار.

maxrange = 5000.0;

rngres = 10.0;

fc = 20.0e3;

csound = 1520.0;

استفاده ازیک شکل موج مستطیلی برای سیگنال ارسال شده.

prf = csound/(2*maxrange);

pulseWidth = 8*rngres/csound;

pulseBW = 1/pulseWidth;

fs = 80*pulseBW;

waveform = phased.RectangularWaveform(‘PulseWidth’,pulseWidth,’PRF’,prf, …

‘SampleRate’,fs);

تعیین موقعیت های سونار.

sonarplatform1 = phased.Platform(‘InitialPosition’,[0;0;-60],’Velocity’,[0;0;0]);

sonarplatform2 = phased.Platform(‘InitialPosition’,[0;0;-60],’Velocity’,[0;-25;0]);

تعیین موقعیت هدف.

targetplatform = phased.Platform(‘InitialPosition’,[0;500;-60],’Velocity’,[0;0;0]);

تعریف مسیر زیرآب و انتشار اشیای کانال. انتشار یکطرفه را فرض کنید.

paths = phased.IsoSpeedUnderwaterPaths(‘ChannelDepth’,100, …

‘CoherenceTime’,0,’NumPathsSource’,’Property’,’NumPaths’,1, …

‘PropagationSpeed’,csound);

propagator = phased.MultipathChannel(‘SampleRate’,fs,’OperatingFrequency’,fc);

ارسال یک شکل موج مستطیلی.

wav = waveform();

nsamp = size(wav,1);

rxpulses = zeros(nsamp,2);

t = (0:nsamp-1)/fs;

ارسال و دریافت در سونار ثابت.

[pathmat,dop,aloss,tgtang,srcang] = paths(sonarplatform1.InitialPosition, …

targetplatform.InitialPosition,sonarplatform1.InitialVelocity, …

targetplatform.InitialVelocity,1/prf);

rxpulses(:,1) = propagator(wav,pathmat,dop,aloss);

ارسال و دریافت در سونار متحرک.

[pathmat,dop,aloss,tgtang,srcang] = paths(sonarplatform2.InitialPosition, …

targetplatform.InitialPosition,sonarplatform2.Velocity, …

targetplatform.Velocity,1/prf);

rxpulses(:,2) = propagator(wav,pathmat,dop,aloss);

ترسیم پالس های دریافتی.

plot(abs(rxpulses))

xlim([490 650])

ylim([0 1.65e-3])

legend(‘Stationary sonar’,’Moving sonar’)

xlabel(‘Received Sample Time (sec)’)

ylabel(‘Integrated Received Pulses’)

D:\Program Files\MATLAB\R2017a\help\examples\phased\win64\DopplerStretchingOfSonarSignalExample_01.png

تداوم سیگنال دریافت شده در سونار متحرک در مقایسه با سونار ثابت افزایش یافته است.

************************************************************

openExample(‘phased/ActiveSonarExample’)

***********************************************************************

 

 

شناسایی هدف زیر آب با یک سیستم سونار فعال

این مثال نحوه شبیه سازی یک سناریوی سونار مونواستاتیک فعال را با دو هدف نشان می دهد. سیستم سونار شامل یک آرایه از پروژکتور همسانگرد و یک سازه آبآواسنج منفرد است. این آرایه پروژکتور به شکل کروی است. سیگنال های پس پراکنش شده توسط آبآواسنج دریافت می شوند. سیگنال های دریافتی هم شامل دریافت های مستقیم و هم دریافت های چند مسیره می شود.

محتویات

  • محیط زیرآب
  • اهداف سونار
  • منتشرکننده و دریافت کننده
  • شبیه سازی سیستم سونار
  • سونار فعال با بلهاپ
  • خلاصه
  • مرجع

محیط زیرآب

مسیرهای انتشار چندگانه بین منبع صوتی و هدف در یک محیط آب سطحی وجود دارند. در این مثال پنج مسیر در یک کانال با عمق 100 متر و سرعت ثابت صوت m/s 1520، فرض می شوند. افت بستر dB 5/0 را برای تأکید بر اثرات مسیرهای چندگانه استفاده کنید.

ویژگی های محیط زیرآب، شامل عمق کانال، تعداد مسیرهای انتشار، سرعت انتشار و افت بستر را تعریف کنید.

numPaths = 5;

propSpeed = 1520;

channelDepth = 100;

isopath{1} = phased.IsoSpeedUnderwaterPaths(…

‘ChannelDepth’,channelDepth,…

‘NumPathsSource’,’Property’,…

‘NumPaths’,numPaths,…

‘PropagationSpeed’,propSpeed,…

‘BottomLoss’,0.5,…

‘TwoWayPropagation’,true);

isopath{2} = phased.IsoSpeedUnderwaterPaths(…

‘ChannelDepth’,channelDepth,…

‘NumPathsSource’,’Property’,…

‘NumPaths’,numPaths,…

‘PropagationSpeed’,propSpeed,…

‘BottomLoss’,0.5,…

‘TwoWayPropagation’,true);

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

fc = 20e3; % Operating frequency (Hz)

channel{1} = phased.MultipathChannel(…

‘OperatingFrequency’,fc);

channel{2} = phased.MultipathChannel(…

‘OperatingFrequency’,fc);

اهداف سونار

این سناریو دو هدف دارد. هدف اول دورتر است اما شدت اکوی هدف بزرگ تری دارد و دومی نزدیک تر است ولی شدت اکوی هدف کوچک تری دارد. هر دو هدف در ارتباط با سیستم سونار، همسانگرد و نامتحرک هستند.

tgt{1} = phased.BackscatterSonarTarget(…

‘TSPattern’,-5*ones(181,361));

tgt{2} = phased.BackscatterSonarTarget(…

‘TSPattern’,-15*ones(181,361));

tgtplat{1} = phased.Platform(…

‘InitialPosition’,[500; 1000; -70],’Velocity’,[0; 0; 0]);

tgtplat{2} = phased.Platform(…

‘InitialPosition’,[500; 0; -40],’Velocity’,[0; 0; 0]);

موقعیت اهداف، در کنار ویژگی های کانال، مسیرهای زیر آب در راستای انتشار سیگنال ها تعیین می کند. مسیرهای بین سامانه سونار و هر هدف را ترسیم کنید. توجه کنید که مختصه z، با صفر در نظر گرفتن روی سطح آب کانال، بیانگر عمق است و فاصله در صفحه x-y بصورت دامنه بین منبع و هدف ترسیم می شود.

helperPlotPaths([0;0;-60],[500 500; 1000 0; -70 -40], …

channelDepth,numPaths)

https://www.mathworks.com/help/releases/R2018a/examples/phased/win64/ActiveSonarExample_01.png

ارسال کننده و دریافت کننده

شکل موج فرستاده شده

سپس، یک شکل موج مستطیلی را جهت ارسال به سمت اهداف تعیین کنید. حداکثر دامنه هدف و وضوح دامنه مطلوب، ویژگی های شکل موج را تعریف می کنند.

maxRange = 5000; %حداکثر دامنه بدون ابهام

rangeRes = 10; % وضوح دامنه مورد نیاز

prf = propSpeed/(2*maxRange); % فرکانس تکرار پالس

pulse_width = 2*rangeRes/propSpeed; % عرض پالس

pulse_bw = 1/pulse_width; %پهنای باند پالس

fs = 2*pulse_bw; %نرخ نمونه برداری

wav = phased.RectangularWaveform(…

‘PulseWidth’,pulse_width,…

‘PRF’,prf,…

‘SampleRate’,fs);

نرخ نمونه برداری از کانال چندمسیره را با نرخ نمونه برداری شکل موج ارسال شده بروزرسانی کنید.

channel{1}.SampleRate = fs;

channel{2}.SampleRate = fs;

ارسال کننده

ارسال کننده از آرایه ای نیم کره ای از سازه های پروژکتور همسانگرد دارای موج گیر پشتی تشکیل می شود. این ارسال کننده در 60 متری زیر سطح قرار می گیرد. این آرایه را ایجاد کنید و هندسه آرایه را مشاهده کنید.

plat = phased.Platform(…

‘InitialPosition’,[0; 0; -60],…

‘Velocity’,[0; 0; 0]);

proj = phased.IsotropicProjector(…

‘FrequencyRange’,[0 30e3],’VoltageResponse’,80,’BackBaffled’,true);

[ElementPosition,ElementNormal] = helperSphericalProjector(8,fc,propSpeed);

projArray = phased.ConformalArray(…

‘ElementPosition’,ElementPosition,…

‘ElementNormal’,ElementNormal,’Element’,proj);

viewArray(projArray,’ShowNormals’,true);

https://www.mathworks.com/help/releases/R2018a/examples/phased/win64/ActiveSonarExample_02.png

الگوی این آرایه را در ارتفاع صفر درجه مشاهده کنید. این جهت نمایی با توجه به موقعیت جهت (آزیموت) سازه های آرایه نشاندهنده حداکثرها در جهت (آزیموت) است.

pattern(projArray,fc,-180:180,0,’CoordinateSystem’,’polar’,…

‘PropagationSpeed’,propSpeed);

https://www.mathworks.com/help/releases/R2018a/examples/phased/win64/ActiveSonarExample_03.png

دریافت کننده

دریافت کننده شامل یک آبآواسنج و یک تقویت کننده است. آبآواسنج یک سازه همسانگرد منفرد است و دارای دامنه بسامد از 0 تا kHz 30 است که دارای بسامد کاری کانال چندمسیره است. حساسیت پذیری ولتاژ آبآواسنج را dB 140- در نظر بگیرید.

hydro = phased.IsotropicHydrophone(…

‘FrequencyRange’,[0 30e3],’VoltageSensitivity’,-140);

اختلال حرارتی در سیگنال دریافتی وجود دارد. فرض کنید که دریافت کننده دارای dB 20 دریافتی و عدد اختلال dB 10 است.

rx = phased.ReceiverPreamp(…

‘Gain’,20,…

‘NoiseFigure’,10,…

‘SampleRate’,fs,…

‘SeedSource’,’Property’,…

‘Seed’,2007);

فرستنده و جمع کننده

در یک سامانه سونار فعال، یک موج آکوستیک به سمت هدف ارسال، توسط هدف پراکنده و توسط آبآواسنج دریافت می شود. فرستنده به واسطه هندسه آرایه، وابستگی مکانی از موج منتشر شده تولید می کند. همچنین، جمع کننده سیگنال های پس پراکنش شده را که توسط سازه آبآواسنج از هدف دورمیدان دریافت نموده، ترکیب می کند.

radiator = phased.Radiator(‘Sensor’,projArray,’OperatingFrequency’,…

fc,’PropagationSpeed’,propSpeed);

collector = phased.Collector(‘Sensor’,hydro,’OperatingFrequency’,fc,…

‘PropagationSpeed’,propSpeed);

شبیه سازی سامانه سونار

سپس شکل موج مستطیل را با ده تکرار فاصله زمانی ارسال کنید و سیگنال دریافتی در آبآواسنج را برای هر ارسال شبیه سازی کنید.

x = wav(); % تولید پالس

xmits = 10;

rx_pulses = zeros(size(x,1),xmits);

t = (0:size(x,1)-1)/fs;

 

for j = 1:xmits

 

% به روزرسانی هدف و موقعیت سونار

[sonar_pos,sonar_vel] = plat(1/prf);

 

for i = 1:2 %حلقه (لوپ) مابین اهداف

[tgt_pos,tgt_vel] = tgtplat{i}(1/prf);

% محاسبه مسیرهای ارسال با استفاده از روش تصاویر. مسیرها با توجه به ویژگی

% بروزرسانی می شوند. CoherenceTime

[paths,dop,aloss,tgtAng,srcAng] = sopath{i}(…

sonar_pos,tgt_pos,…

sonar_vel,tgt_vel,1/prf);

 

% محاسبه سیگنال های تابیده شده. این آرایه را در جهت هدف هدایت کنید.

tsig = radiator(x,srcAng);

 

% سیگنال های تابشی را از طریق کانال منتشر کنید.

tsig = channel{i}(tsig,paths,dop,aloss);

 

% هدف

tsig = tgt{i}(tsig,tgtAng);

 

% جمع کننده

rsig = collector(tsig,srcAng);

rx_pulses(:,j) = rx_pulses(:,j) + …

rx(rsig);

end

end

 

بزرگی پیوستگی غیرهم فاز سیگنال های دریافتی را برای تعیین موقعیت بازگشت ها از دو هدف ترسیم کنید.

figure

rx_pulses = pulsint(rx_pulses,’noncoherent’);

plot(t,abs(rx_pulses))

grid on

xlabel(‘Time (s)’)

ylabel(‘Amplitude (V)’)

title(‘Integrated Received Pulses’)

 

https://www.mathworks.com/help/releases/R2018a/examples/phased/win64/ActiveSonarExample_04.png % اهداف که با فاصله نسبتاً زیادی از یکدیگر جدا شده اند، به نظر می رسد که بازگشت های متمایز داشته باشند. روی اولین بازگشت بزرگ نمایی کنید.

xlim([0.55 0.85])

https://www.mathworks.com/help/releases/R2018a/examples/phased/win64/ActiveSonarExample_05.png

بازگشت از هدف، انطباق پالس ها از مسیرهای انتشار چندگانه است که منجر به حداکثرهای چندگانه برای هر هدف می شود. حداکثرهای حاصل ممکن است اشتباهاً بعنوان اهداف دیگر تفسیر شوند.

سونار فعال همراه با بلهاپ (Bellhop)

در بخش قبل، سرعت صوت بعنوان تابعی از عمق کانال ثابت بود. در مقابل، یک برنامه ردیابی تابش مانند بلهاپ می تواند مسیرهای آکوستیک را برای مقاطع سرعت صوت متغیر مکانی تولید کند. شما می توانید از اطلاعات مسیر تولید شده توسط بلهاپ برای انتشار سیگنال ها از طریق کانال چندمسیره استفاده کنید. انتقال بین یک پروژکتور همسانگرد و آبآواسنج همسانگرد در یک محیط خالی از هدف را با نیمرخ سرعت صوت “مانک” شبیه سازی کنید. اطلاعات مسیر در یک فایل ورودی بلهاپ قرار می گیرند (MunkB_eigenray_Arr.arr).

تنظیمات بلهاپ

در این مثال، کانال 5000 متر عمق دارد. منبع در عمق 1000 متری و دریافت کننده در عمق 800 متری قرار می گیرند. آن ها در فاصله 100 کیلومتری از هم قرار می گیرند. مسیرهای محاسبه شده توسط بلهاپ را وارد و ترسیم کنید.

[paths,dop,aloss,rcvAng,srcAng] = helperBellhopArrivals(fc,6,false);

helperPlotPaths(‘MunkB_eigenray’)

https://www.mathworks.com/help/releases/R2018a/examples/phased/win64/ActiveSonarExample_06.png

برای این سناریو، دو مسیر مستقیم بدون بازتاب های هم کنشگر و هشت مسیر با بازتاب هایی در هر دو سطح بالایی و پایینی وجود دارد. سرعت صوت در کانال در عمق تقریبی 1250 متر کمترین مقدار است و در امتداد بالا و پایین کانال به حداکثر 1550 متر بر ثانیه افزایش می یابد.

یک کانال و دریافت کننده جدید برای استفاده همراه با داده های بلهاپ ایجاد کنید.

release(collector)

channelBellhop = phased.MultipathChannel(…

‘SampleRate’,fs,…

‘OperatingFrequency’,fc);

rx = phased.ReceiverPreamp(…

‘Gain’,10,…

‘NoiseFigure’,10,…

‘SampleRate’,fs,…

‘SeedSource’,’Property’,…

‘Seed’,2007);

یک پالس برای تنظیمات مسئله جدید تعیین کنید.

maxRange = 150000; %حداکثر دامنه بدون ابهام

prf = propSpeed/(maxRange); % بسامد تکرار پالس

pulse_width = 0.02;

wav = phased.RectangularWaveform(…

‘PulseWidth’,pulse_width,…

‘PRF’,prf,…

‘SampleRate’,fs);

شبیه سازی بلهاپ

سپس، انتقال ده پالس از فرستنده به دریافت کننده را شبیه سازی کنید.

x = repmat(wav(),1,size(paths,2));

xmits = 10;

rx_pulses = zeros(size(x,1),xmits);

t = (0:size(x,1)-1)/fs;

for j = 1:xmits

% پروژکتور

tsig = x.*proj(fc,srcAng)’;

% انتشار سیگنال های تابیده شده از طریق کانال.

tsig = channelBellhop(tsig,paths,dop,aloss);

% دریافت کننده

rsig = collector(tsig,rcvAng);

rx_pulses(:,j) = rx_pulses(:,j) + …

rx(rsig);

end

پیوستگی غیرهم فاز پالس های ارسال شده را ترسیم کنید.

figure

rx_pulses = pulsint(rx_pulses,’noncoherent’);

plot(t,abs(rx_pulses))

grid on

xlim([66 70])

xlabel(‘Time (s)’)

ylabel(‘Amplitude (V)’)

title(‘Integrated Received Pulses’)

https://www.mathworks.com/help/releases/R2018a/examples/phased/win64/ActiveSonarExample_07.png

پالس های ارسال شده در پاسخ بصورت حداکثرها ظاهر می شوند. توجه کنید که دو مسیر مستقیم، که فاقد بازتاب هم کنشگر هستند، اول می رسند و بیشترین دامنه را دارند. در مقایسه پالس های دریافتی مسیر مستقیم، پالس دوم که می رسد بیشتری دامنه را بین این دو دارد، که بیانگر فاصله انتشار کوتاه تر است. زمان تأخیر طولانی تر برای مسیر کوتاه تر را می توان با این حقیقت که از درون کم سرعت ترین بخش کانال منتشر می شود، توضیح داد. پالس های باقیمانده در مقایسه با مسیرهای مستقیم، بدلیل بازتاب های چندگانه در بستر کانال که هر کدام در افت مشارکت دارند، دارای دامنه کاهش یافته هستند.

خلاصه

در این مثال، پالس های آکوستیک در محیط های آب سطحی و آب عمیق ارسال و دریافت می شوند. با استفاده از یک شکل موج مستطیلی، یک سامانه سونار فعال دو هدف به خوبی جدا شده را در آب سطحی تشخیص داد. وجود مسیرهای چندگانه در سیگنال دریافتی آشکار بود. سپس، پالس ها بین یک پروژکتور و آبآواسنج در آب عمیق با نیمرخ سرعت صوت “مانک” با استفاده از مسیرهای تولید شده توسط بلهاپ منتقل شدند. اثر سرعت صوت متغیر مکانی مورد توجه قرار گرفت.

مرجع

اوریک، رابرت. اصول صوت زیر آب. لوس آلتوس، کالیفرنیا: انتشارات پنینسولا، 1983.

************************************************

openExample(‘phased/PassiveSonarExample’)

************************************************

جانمایی یک موقعیت یاب بیکن آکوستیک (Acoustic Beacon) با یک سامانه سونار غیرفعال

این مثال نحوه شبیه سازی یک سامانه سونار غیرفعال را نشان می دهد. یک موقعیت یاب بیکن آکوستیک ثابت در یک کانال آب سطحی توسط آرایه ای غیرفعال که روی آب کشیده می شود، شناسایی و موقعیت یابی می شود. بیکن آکوستیک یک پالس 10 میلی ثانیه ای 5/37 کیلوهرتزی در هر ثانیه ارسال می کند و بصورت یک پروژکتور همسانگرد مدلسازی می شود. سیستم موقعیت یاب یک آرایه غیرفعال را زیر سطح آب یدک می کشد که بصورت یک آرایه خطی یکنواخت مدلسازی می شود. به محض اینکه سیگنال بیکن آکوستیک شناسایی می شود، جهت تخمین گر ورودی برای تعیین موقعیت بیکن استفاده می شود.

تعریف کانال زیرآبی

در این مثال، بیکن آکوستیک در بستر یک کانال آب سطحی قرار می گیرد که 200 متر عمق دارد. برای مکان یابی بیکن یک آرایه غیرفعال زیر سطح آب کشیده می شود.

ابتدا، یک کانال چندمسیره برای ارسال سیگنال بین بیکن و آرایه غیرفعال ایجاد کنید. ده مسیر انتشار شامل مسیر مستقیم و بازتاب هایی از سطوح بالا و پایین در نظر بگیرید. این مسیرها که توسط isopaths تولید می شوند، از سوی کانال چند مسیره channel مورد استفاده قرار خواهند گرفت تا انتشار سیگنال را شبیه سازی کنند.

propSpeed = 1520;

channelDepth = 200;

OperatingFrequency = 37.5e3;

isopaths = phased.IsoSpeedUnderwaterPaths(‘ChannelDepth’,channelDepth,…

‘NumPathsSource’,’Property’,’NumPaths’,10,’PropagationSpeed’,propSpeed);

channel = phased.MultipathChannel(‘OperatingFrequency’,OperatingFrequency);

تعریف بیکن آکوستیک و آرایه غیرفعال

شکل موج بیکن آکوستیک

شکل موج ساطع شده از بیکن آکوستیک را تعریف کنید. این شکل موج، یک پالس مستطیلی است که دارای فواصل تکرار 1 ثانیه ای و پهنای 10 میلی ثانیه می باشد.

prf = 1;

pulseWidth = 10e-3;

pulseBandwidth = 1/pulseWidth;

fs = 2*pulseBandwidth;

wav = phased.RectangularWaveform(‘PRF’,prf,’PulseWidth’,pulseWidth,…

‘SampleRate’,fs);

channel.SampleRate = fs;

بیکن آکوستیک

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

projector = phased.IsotropicProjector(‘VoltageResponse’,120);

projRadiator = phased.Radiator(‘Sensor’,projector,…

‘PropagationSpeed’,propSpeed,’OperatingFrequency’,OperatingFrequency);

beaconPlat = phased.Platform(‘InitialPosition’,[5000; 2000; -199],…

‘Velocity’,[0; 0; 0]);

آرایه درحال کشیدن غیرفعال

آرایه درحال کشیدن غیرفعال منبع پینگ ها را شناسایی و موقعیت یابی خواهد کرد و بصورت یک آرایه خطی پنج سازه ای با فاصله دهی نصف طول موج مدلسازی می شود. این آرایه غیرفعال دارای سرعت 1 متر بر ثانیه در جهت y است. محور آرایه به موازات جهت حرکت متمایل است.

hydrophone = phased.IsotropicHydrophone(‘VoltageSensitivity’,-150);

array = phased.ULA(‘Element’,hydrophone,…

‘NumElements’,5,’ElementSpacing’,propSpeed/OperatingFrequency/2,…

‘ArrayAxis’,’y’);

arrayCollector = phased.Collector(‘Sensor’,array,…

‘PropagationSpeed’,propSpeed,’OperatingFrequency’,OperatingFrequency);

arrayPlat = phased.Platform(‘InitialPosition’,[0; 0; -10],…

‘Velocity’,[0; 1; 0]);

تقویت کننده دریافت کننده را برای هر سازه آبآواسنج تعریف کنید. بهره dB 20 و عدد اختلال dB 10 را انتخاب نمایید.

rx = phased.ReceiverPreamp(…

‘Gain’,20,…

‘NoiseFigure’,10,…

‘SampleRate’,fs,…

‘SeedSource’,’Property’,…

‘Seed’,2007);

شبیه سازی سامانه سونار غیرفعال

بیکن آکوستیک را فعال کرده و ده پینگ ارسال کنید. بعد از تأخیر انتشار، پینگ ها بصورت حداکثرها در سیگنال های دریافتی آرایه ظاهر می شوند.

x = wav();

numTransmits = 10;

rxsig = zeros(size(x,1),5,numTransmits);

for i = 1:numTransmits

% بروزرسانی موقعیت آرایه و بیکن آکوستیک

[pos_tx,vel_tx] = beaconPlat(1/prf);

[pos_rx,vel_rx] = arrayPlat(1/prf);

% محاسبه مسیرهای بین بیکن آکوستیک و آرایه

[paths,dop,aloss,rcvang,srcang] = …

isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf);

% انتشار شکل موج بیکن آکوستیک

tsig = projRadiator(x,srcang);

rsig = channel(tsig,paths,dop,aloss);

% جمع آوری سیگنال های منتشر شده

rsig = arrayCollector(rsig,rcvang);

% ذخیره پالس های دریافتی

rxsig(:,:,i) = abs(rx(rsig));

end`

آخرین پالس دریافتی را ترسیم کنید. بدلیل مسیرهای انتشار چندگانه، هر پینگ یک انطباق از پالس های چندگانه است.

t = (0:length(x)-1)’/fs;

plot(t,rxsig(:,end))

xlabel(‘Time (s)’);

ylabel(‘Signal Amplitude (V)’)

برآورد جهت ورودی

جهت ورودی بیکن آکوستیک را با توجه به آرایه تخمین بزنید. با تعیین یک سیگنال با منبع منفرد و جهت ورودی بعنوان خروجی، یک شیء تخمین گر MUSIC ایجاد کنید. شبکه اسکن زاویه را با فاصله 1/0 درجه ایجاد کنید.

musicspatialspect = phased.MUSICEstimator(‘SensorArray’,array,…

‘PropagationSpeed’,propSpeed,’OperatingFrequency’,…

OperatingFrequency,’ScanAngles’,-90:0.1:90,’DOAOutputPort’,true,…

‘NumSignalsSource’,’Property’,’NumSignals’,1);

سپس، پینگ ها را برای 500 بازه تکرار دیگر جمع آوری کنید. جهت ورودی را برای هر بازه تکرار برآورد کنید و برآوردها را با جهت ورودی صحیح مقایسه کنید.

numTransmits = 500;

angPassive = zeros(numTransmits,1);

angAct = zeros(numTransmits,1);

for i = 1:numTransmits

% بروزرسانی موقعیت آرایه و بیکن آکوستیک

[pos_tx,vel_tx] = beaconPlat(1/prf);

[pos_rx,vel_rx] = arrayPlat(1/prf);

% محاسبه مسیرهای بین بیکن آکوستیک و آرایه

[paths,dop,aloss,rcvang,srcang] = …

isopaths(pos_tx,pos_rx,vel_tx,vel_rx,1/prf);

angAct(i) = rcvang(1,1);

% انتشار شکل موج بیکن آکوستیک

tsig = projRadiator(x,srcang);

rsig = channel(tsig,paths,dop,aloss);

% جمع آوری سیگنال های منتشر شده

rsig = arrayCollector(rsig,rcvang);

rxsig = rx(rsig);

% برآورد جهت ورودی

[~,angPassive(i)] = musicspatialspect(rxsig);

end

زوایای ورودی برآورد شده و جهت های صحیح ورودی برای هر بازه تکرار پالس را ترسیم کنید.

plot([angPassive angAct])

xlabel(‘Pulse Number’)

ylabel(‘Arrival angle (degrees)’)

legend(‘Estimated DOA’,’Actual DOA’)

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

خلاصه

در این مثال، انتقال پینگ های آکوستیک بین یک بیکن و آرایه غیرفعال در یک کانال آب سطحی شبیه سازی شد. هر پینگ از ده مسیر آکوستیک دریافت گردید. جهت ورودی بیکن نسبت به آرایه غیرفعال برای هر پینگ دریافتی برآورد و با جهت صحیح ورودی مقایسه شد. جهت ورودی را می توان برای موقعیت یابی و دستیابی به بیکن استفاده نمود.

 

دسته بندی: برچسب ها: