X
تبلیغات
رایتل

مهندسی عمران-زلزله(محمدجواد خسرویانی)

رسم طیف فوریه و معکوس فوریه برای یک سیگنال در متلب

گاهی اوقات برای مشاهده فرکانس یک سیگنال یا رکورد زلزله نیاز می باشد که محدوده فرکانسی سیگنال مشخص گردد و برای کارهای دیگر مورد استفاده قرار گیرد. یک راه آن استفاده از سیسمو سیگنال هست که به راحتی نمودار فرکانسی رکورد را رسم می کند اما راه دوم  استفاده از کد فوریه FFT  در متلب می باشد که به راحتی با نوشتن کدی می توان برای هر رکورد یا سیگنالی می توان طیف فوریه را رسم کرد و نمودار دامنه بر حسب فرکانس رو مشاهده کرد.


برای مثال در شکل زیر رکورد زلزله تفت رو می بینید



حال با استفاده از کد زیر می توان تبدیل فوریه سیگنال بالا رو رسم کرد: timestep: 0.01 sec

%%% FFT- Mathlab Code....M.Khosraviani...2016/7/17
%%FFT 0f Taft Record%%

x1=a1
na=length(x1) ;
n=nextpow2(na) ;
ffta=fft(x1,2^n);
ampffta=abs(ffta(1:length(ffta)/2))*timestep;
f=1/(2*timestep)*linspace(0,1,length(ampffta)) ;
plot(f,ampffta) ;
xlabel('Frequency(Hz)');
ylabel('Amplitude');
title('FFT of First Floor');
grid on;
figure;

در کد بالا x1=  ما هست inputهمون سیگنال شما یا شتاب یا هر مقدار دیگری است که فرکانسش رو نیاز داریم با بهتره بگیم

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


همچنین در زیر مثالی آورده شده از معکوس فوریه:

N = 1000;
t0 = 1e-13;
tau = 2*1e-14;
n = [0:t0/40:2*1e-13-t0/40];
f0 = 3*1e8/(150*1e-9);

x = cos(2*pi*f0*n);
x = x.*exp((-(n-t0).^2)./(tau^2));
%  X = abs(fft(x,N));  <-- Not seen this technique before, and why N=1000?
% try something more like:
X = fft(x);

F = [-N/2 : N/2 - 1]/N;
% this is fine to shift and plot the function
Xshifted = fftshift(X);
plot( abs( Xshifted ) )
% now you're taking the inverse of the shifted function, not what you want
% y=ifft(X,80);  also not sure about the 80
y = ifft(X);

figure(3)
plot(n,y)
figure(4)
plot( n, x ); hold on; plot( n, y, 'o' )

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



تاریخ ارسال: جمعه 25 تیر 1395 ساعت 15:31 | نویسنده: M.khosraviani | چاپ مطلب
نظرات (12)
شنبه 27 خرداد 1396 16:09
هادی
امتیاز: 0 0
لینک نظر
سلام
من یک سری داده دارم مال بارش هست که بصورت روزانه هستن منم میخوام این کار رو انجام بدم اما نمی تونم داده ها رو وارد کنم راهنمایی میکنید؟
پاسخ:
salam
kari nadare shoma fghat bedonid ke che monahani darin va chi bar hasbe chi hast
shoma faghat mehvare ghaeme monhaniton ro jaye x1 jagozari konid
سه‌شنبه 23 خرداد 1396 15:43
masood
امتیاز: 0 0
لینک نظر
slm dr khaste nabashid
sepas babat cod fft kheyli mofid bood.

az yek teyf ferekans mikham ifft begiram va be hoze zaman bebaram.chetor ifft begiram?mamnoon misham pasokh bedin
پاسخ:
salam
sepasgozaram
daghighan code IFFT dar hamon safhe ba mesal avorde shode
دوشنبه 15 خرداد 1396 15:16
eli
امتیاز: 1 0
لینک نظر
با سلام خدمت شما و سپاس فراوان بابت سایت عالیتون

من نمیتونم داده هام رو وارد کنم .چطور باید eventرو فراخوانی کنم؟
با تشکر از شما
پاسخ:
salam
mamnoon az shoma agae eyne code bande berid dade vorodi shoma daghighan hamon X1 hast ke masaln shetab ro be sorate bordar dar matlab be onvane X1 bedin
چهارشنبه 9 فروردین 1396 12:39
student
امتیاز: 0 0
لینک نظر
سلام ، وقتتون بخیر شما از اصلاح شتابنگاشت اطلاعاتی دارید؟!
برای محدوده فرکانسی انتخابی از روی طیف فوریه یا هر روش دیگری
پاسخ:
salm
ravesh haye ziadi baraye eslahe mahdode frequency hast
ke dar matlab ravesh haye banpass highpass va chand ravesh ham dar seismosignal hastesh
bayad bebinid ke che kar mikhaid konid va be che filteringi niyaz darid
چهارشنبه 18 اسفند 1395 13:30
آرش
امتیاز: 0 0
لینک نظر
سلام
ببخشید شما در باره مفهوم و کاربرد cross spectral density مطلب یا پیشنهادی دارین؟
پاسخ:
salam
dar hale hazer na
دوشنبه 9 اسفند 1395 17:56
alis
امتیاز: 0 0
لینک نظر
سلام خسته نباشید ببخشید من این کد های رو اعمال کردم ولی جوابم خیلی متفاوته.سیگنال شمام گسسته بود؟
میشه براتون ارسال کنم شمام امتحانش کنین اگه زحمتی نیست؟
پاسخ:
salam

signale ,man recorde TAFT bode
سه‌شنبه 26 بهمن 1395 14:47
zahra
امتیاز: 0 0
لینک نظر
سلام.خسته نباشید.ببخشیدما رکورد زلزله رو از سایت پیر گرفتیم ولی نمیدونیم ورودی هامون چیا هستن؟ و چه جوری باید وارد کنیم؟
با تشکر
پاسخ:
salam
yek file zipi mide ke ham jabejai va sorat va shetab ro dare
be in sorat AT VT DT
یکشنبه 21 آذر 1395 21:08
Maryami.afshar@yahoo.com
امتیاز: 0 0
لینک نظر
سلام .ممنون .مشکلم حل شد.مرسی بابت سایت خوبتون .که منو داره به این حیطه علاقه مند میکنه و قصد دارم پایان نامه ام رو تو این قسمت انجام بدم
پاسخ:
sepas
یکشنبه 21 آذر 1395 19:53
ابوالفضل
امتیاز: 1 0
لینک نظر
سلام استاد خسته نباشید خیلی ممنون بابت این برنامه کاش می شد بخش های مختلف برنامه رو به صورت ریز توضیح بدید. می شه در مورد تابع معکوس فوریه هم توضیح بدید؟
پاسخ:
salam
mamnoon
haame inha tozihate FFT hastesh ke berahati hameye bakhshash mamlome
ke x1= hamon signale shoam hast ke marbot be shetabe ya harchize dgast
ifft ham makose fft hast ke to matlab kar mikone
ke dar hani post tozih IFFT ezafe shode
چهارشنبه 17 آذر 1395 11:55
Maryami.afshar@yahoo.com
امتیاز: 0 0
لینک نظر
سلام.خسته نباشید
ببخشید استاد شما فرکانس ها رو تو نمودار نمایش دادید اگه من بخوام جواب ها رو به صورت جدول ببینم باید چه دستوری رو بزنم
من این کد رو برای زلزله طبس اجرا کردم هیچ خطایی هم نداد ولی نمودارم عجیب غریب شد یعنی ممکنه به خاطر تنظیم نبودن واحد های نمودار باشه
پاسخ:
salam
sepasgozaram
ehtemalan unit recordeton moshkel dare ya file recordeton salem nist vaya scale nist
دوشنبه 15 آذر 1395 17:32
Maryami.afshar@yahoo.com
امتیاز: 0 0
لینک نظر
دکتر تو این کدی که شما نوشتید x1 ها زمانه .nها شتاب نگاشت هاست این درتا روبه نرمافزار معرفی کردید ولی چه طور اینها رو میره از seismosignal mikhone
پاسخ:
shoma dar FFT faghat record ro dar in code matlab midin va baghisho misaze chon FFT record ro be damane frequency mibare va zaman manai nadare
دوشنبه 15 آذر 1395 17:17
Maryami.afshar@yahoo.com
امتیاز: 1 0
لینک نظر
سلام خسته نباشید تو این کن داده های زلزله رو چطور فراخوانی کردید منظورم اینه از اگسل چطور به متلب معرفی کردید
پاسخ:
bebinid lozomi nadare az excel khonde beshe
kafiye recordeton ro ba formate dat ya txt dashte bashin va dar matlab export konid
برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
نام :
پست الکترونیک :
وب/وبلاگ :
ایمیل شما بعد از ثبت نمایش داده نخواهد شد