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 | چاپ مطلب
نظرات (5)
یکشنبه 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
امتیاز: 0 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 ثبت نام کنید. (راهنما)
نام :
پست الکترونیک :
وب/وبلاگ :
ایمیل شما بعد از ثبت نمایش داده نخواهد شد