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

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

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

گاهی اوقات برای مشاهده فرکانس یک سیگنال یا رکورد زلزله نیاز می باشد که محدوده فرکانسی سیگنال مشخص گردد و برای کارهای دیگر مورد استفاده قرار گیرد. یک راه آن استفاده از سیسمو سیگنال هست که به راحتی نمودار فرکانسی رکورد را رسم می کند اما راه دوم  استفاده از کد فوریه 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' )

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



نظرات 22 + ارسال نظر
فاروق یکشنبه 3 مهر 1401 ساعت 15:47

باسلام؛ بنده نتایج خام شتاب-زمان ناشی از تست سقوط رو گرفته ام؛ حال باید فرکانسهای غالب رو بدست آورده و پی از فیلتر کردن و تبدیل؛ سپس نمودار شتاب؛ سرعت و تغییر مکان رو ترسیم کنم. لطفا برای کدهای موردنیاز کمک کنید! تعداد دادها بین ۱۰۰۰۰ تا ۳۰۰۰۰ داده هستش!

salamsalamaz codhaie ke dar post goftan estefade konid va frequency haye ghaleb ra peyda konid
bad berahati mitonid nemodarhaye sehtab va sorat va jabejai ro rasm konidhamchenin rahe dovom estefade az barnam sesmosignal hast ke pasokh shetab khodeton ro behesh bedin va hamye nemodra ha ro rasm mikone baraton

مهدیس شنبه 4 اردیبهشت 1400 ساعت 17:27

سلام اقای مهندس خسته نباشید
من رکورد زلزله رو که از سایت peerدانلود کردیم کدوم قسمتشو به عنوان ورودی وارد میکنیم من تاحالا با متلب کار نکردم
خیلی مبتدی هستم خواهشا توضیح بدین
ممنون میشم

salam

https://mkhosraviani.blogsky.com/1392/09/08/post-4/%d8%af%d8%b1%db%8c%d8%a7%d9%81%d8%aa-%d8%a7%d8%b7%d9%84%d8%a7%d8%b9%d8%a7%d8%aa-%d8%b2%d9%84%d8%b2%d9%84%d9%87-%d9%88-%d8%b4%d8%aa%d8%a7%d8%a8-%d9%86%da%af%d8%a7%d8%b4%d8%aa-%d9%87%d8%a7-%d8%a7%d8%b2-PEER-Strong-Motion-Databse

dar file haye zip ke site be shoma mide AT2 DT2 VT2 hast ka A shetab V sorat va D jabejai shoma A haro bar asase istgah va va jahate xyz be barname seismo mibarid

be linke zir ham moraje konid
https://mkhosraviani.blogsky.com/1394/04/12/post-61/%d8%a7%d8%ac%d8%b1%d8%a7%db%8c-%d8%b4%d8%aa%d8%a7%d8%a8-%d9%86%da%af%d8%a7%d8%b4%d8%aa-%d8%a8%d8%a7-%d9%81%d8%b1%d9%85%d8%aa-%d9%8eAT2-%d8%af%d8%b1-seismosignal

حامد سه‌شنبه 26 آذر 1398 ساعت 15:09

سلام خوبین اطلاعاتی در مورد منحنی تشدید خاک دارین که به صورت نسبت شتاب طیفی در سطح خاک به شتاب طیفی سنگ بستر تعریف میشود.برای رسم اون چطوری انجام میدن

salam

kheyr

شراره چهارشنبه 13 شهریور 1398 ساعت 10:14

سلام ممنون از راهنماییتون

you are welcome

esearcher سه‌شنبه 31 اردیبهشت 1398 ساعت 03:04

با سلام
آیا در کد یالا مقادیر
N = 1000;
t0 = 1e-13;
tau = 2*1e-14;
همیشه ثابت هستند؟

salam

kheyr inha baraye yek mesal hastan
bakhshe sabete code :
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' )

وحید دوشنبه 12 آذر 1397 ساعت 14:13

درود بر شما
عرض ادب
من ار یک ریکوذد زلزله میخوام دوبار fftبگیرم و از حوزه مکان زمان برم ب حوزه فرکانس-عدد موج
تبدیا اول رو ک طبق روال میام جلو و انجام میشه ولی تبدیل دوم رو برا رسمش مشکل دارم شکلش رو باید روی چه بازه هایی رسم کنم،حالا فرکانسش هم هیچی ،اون گامهای مربوط به عدد موج رو چطوری مشخص کنم؟
اگر زحمتی نیس یه نمونه بهم ارائه بدید.
سوالات دوستان و جوابهای شمارو خوندم و ازتون تشکر میکنم

salam
sheklesh hamon bazeye ghableaar ghole ha moshakhas nistan resolotion ro ba taghire mahdode bala bebarid

حامد شنبه 3 آذر 1397 ساعت 19:41

سلام خسته نباشید رکورد زلزله رو که از سایت پpeerدانلود کردیم کدوم قسمتشو به عنوان ورودی وارد میکنیم خیلی مبتدی هستم خواهشا توضیح بدین

salam
yek file zip daryaft mikonid
ke tosh AT2 DT2 va VT2 hast ke AT2 shetabe DT2 jabejaii hast av VT2 sorate ke shoma shetab ro be seismosignal midin va to seismosignal 2016 asla yek bakhshi ezafe shode ke mostaghiman formate haye PEER ro migire

آرش یکشنبه 13 آبان 1397 ساعت 12:06

سلام
تو شکل اول محور ایکس زمان هستش؟

salam
bale

بهزاد پنج‌شنبه 10 اسفند 1396 ساعت 11:42

سلام خسته نباشد.
همان نمودار اول ( شتاب-زمان)
رو چطوری رسم کنیم داخل متلب با فایل text از داده هامون
ممنونم.

salam
khob berid to matlab loadesh konid
bad plot konid

محمدجواد دوشنبه 6 آذر 1396 ساعت 16:46

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

salam
nabayad fargh kone agar fargh kone ehtemalan moshkel az tabdile vahed hast yekishon konid va time step ro ham ba matlab chek konid

هادی شنبه 27 خرداد 1396 ساعت 16:09

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

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

masood سه‌شنبه 23 خرداد 1396 ساعت 15:43

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

eli دوشنبه 15 خرداد 1396 ساعت 15:16

با سلام خدمت شما و سپاس فراوان بابت سایت عالیتون

من نمیتونم داده هام رو وارد کنم .چطور باید 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

student چهارشنبه 9 فروردین 1396 ساعت 12:39

سلام ، وقتتون بخیر شما از اصلاح شتابنگاشت اطلاعاتی دارید؟!
برای محدوده فرکانسی انتخابی از روی طیف فوریه یا هر روش دیگری

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

سلام
ببخشید شما در باره مفهوم و کاربرد cross spectral density مطلب یا پیشنهادی دارین؟

salam
dar hale hazer na

alis دوشنبه 9 اسفند 1395 ساعت 17:56

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

salam

signale ,man recorde TAFT bode

zahra سه‌شنبه 26 بهمن 1395 ساعت 14:47

سلام.خسته نباشید.ببخشیدما رکورد زلزله رو از سایت پیر گرفتیم ولی نمیدونیم ورودی هامون چیا هستن؟ و چه جوری باید وارد کنیم؟
با تشکر

salam
yek file zipi mide ke ham jabejai va sorat va shetab ro dare
be in sorat AT VT DT

Maryami.afshar@yahoo.com یکشنبه 21 آذر 1395 ساعت 21:08

سلام .ممنون .مشکلم حل شد.مرسی بابت سایت خوبتون .که منو داره به این حیطه علاقه مند میکنه و قصد دارم پایان نامه ام رو تو این قسمت انجام بدم

sepas

ابوالفضل یکشنبه 21 آذر 1395 ساعت 19:53

سلام استاد خسته نباشید خیلی ممنون بابت این برنامه کاش می شد بخش های مختلف برنامه رو به صورت ریز توضیح بدید. می شه در مورد تابع معکوس فوریه هم توضیح بدید؟

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

Maryami.afshar@yahoo.com چهارشنبه 17 آذر 1395 ساعت 11:55

سلام.خسته نباشید
ببخشید استاد شما فرکانس ها رو تو نمودار نمایش دادید اگه من بخوام جواب ها رو به صورت جدول ببینم باید چه دستوری رو بزنم
من این کد رو برای زلزله طبس اجرا کردم هیچ خطایی هم نداد ولی نمودارم عجیب غریب شد یعنی ممکنه به خاطر تنظیم نبودن واحد های نمودار باشه

salam
sepasgozaram
ehtemalan unit recordeton moshkel dare ya file recordeton salem nist vaya scale nist

Maryami.afshar@yahoo.com دوشنبه 15 آذر 1395 ساعت 17:32

دکتر تو این کدی که شما نوشتید 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

Maryami.afshar@yahoo.com دوشنبه 15 آذر 1395 ساعت 17:17

سلام خسته نباشید تو این کن داده های زلزله رو چطور فراخوانی کردید منظورم اینه از اگسل چطور به متلب معرفی کردید

bebinid lozomi nadare az excel khonde beshe
kafiye recordeton ro ba formate dat ya txt dashte bashin va dar matlab export konid

برای نمایش آواتار خود در این وبلاگ در سایت Gravatar.com ثبت نام کنید. (راهنما)
ایمیل شما بعد از ثبت نمایش داده نخواهد شد