{"id":309,"date":"2012-11-03T20:32:15","date_gmt":"2012-11-03T20:32:15","guid":{"rendered":"http:\/\/ahay.org\/blog\/?p=309"},"modified":"2015-09-02T15:31:39","modified_gmt":"2015-09-02T15:31:39","slug":"program-of-the-month-sfbandpass","status":"publish","type":"post","link":"https:\/\/ahay.org\/blog\/2012\/11\/03\/program-of-the-month-sfbandpass\/","title":{"rendered":"Program of the month: sfbandpass"},"content":{"rendered":"<p><a href=\"\/RSF\/sfbandpass.html\">sfbandpass<\/a> implements bandpass filtering using the Butterworth algorithm. <\/p>\n<p>The desired bandwidth is specified by low and high frequencies (in Hertz) <strong>flo=<\/strong> and <strong>fhi=<\/strong>. A continuous low-pass Butterworth filter is <a href=\"http:\/\/sepwww.stanford.edu\/data\/media\/public\/sep\/prof\/pvi\/spec\/paper_html\/node14.html\">given by<\/a><br \/>\n$$B_N^2(\\omega) = \\displaystyle \\frac{1}{\\displaystyle 1+\\left(\\frac{\\omega}{\\omega_0}\\right)^{2N}}$$<br \/>\nThe actual filtering is implemented by recursive (Infinite Impulse Response) convolution in the time domain. The number of poles ($N$) for the low-pass and high-pass filters are specified by <strong>nplo=<\/strong> and <strong>nphi=<\/strong> parameters. <\/p>\n<p>The following example from <a href=\"\/RSF\/book\/sep\/pwd\/hector.html\">sep\/pwd\/hector<\/a> shows a land shot gather after linear moveout and low-pass filtering that isolates ground-roll noise.<\/p>\n<p><img decoding=\"async\" src=\"\/RSF\/book\/sep\/pwd\/hector\/Fig\/hector-dat.png\" alt=\"\" title=\"\" \/> <\/p>\n<p>By default, the applied filter has zero phase. To use a minimum-phase filter, use <strong>phase=y<\/strong>. This is the option used in the Madagascar test example from <a href=\"\/RSF\/book\/rsf\/rsf\/test.html\">rsf\/rsf\/test<\/a><\/p>\n<p><img decoding=\"async\" src=\"\/RSF\/book\/rsf\/rsf\/test\/Fig\/filter.png\" alt=\"\" title=\"\" \/> <\/p>\n<p>An alternative way to implement bandpass filtering is using the Fourier transform and tapering functions in the Fourier domain. One example of this approach is provided by <a href=\"\/RSF\/sferf.html\">sferf<\/a>. <\/p>\n<h3 id=\"10previousprogramsofthemonth\">10 previous programs of the month<\/h3>\n<ul>\n<li><a href=\"\/blog\/2012\/10\/03\/program-of-the-month-sfkirmod\/\">sfkirmod<\/a><\/li>\n<li><a href=\"\/blog\/2012\/09\/03\/program-of-the-month-sfiwarp\/\">sfiwarp<\/a><\/li>\n<li><a href=\"\/blog\/2012\/08\/01\/program-of-the-month-sfpick\/\">sfpick<\/a><\/li>\n<li><a href=\"\/blog\/2012\/07\/02\/program-of-the-month-sffft3\/\">sffft3<\/a><\/li>\n<li><a href=\"\/blog\/2012\/06\/02\/program-of-the-month-sfdip\/\">sfdip<\/a><\/li>\n<li><a href=\"\/blog\/2012\/05\/01\/program-of-the-month-sfderiv\/\">sfderiv<\/a><\/li>\n<li><a href=\"\/blog\/2012\/04\/01\/program-of-the-month-sfgrey3\/\">sfgrey3<\/a><\/li>\n<li><a href=\"\/blog\/2012\/03\/18\/program-of-the-month-sfspectra\/\">sfspectra<\/a><\/li>\n<li><a href=\"\/blog\/2011\/07\/03\/program-of-the-month-sfnoise\/\">sfnoise<\/a><\/li>\n<li><a href=\"\/blog\/2011\/08\/09\/program-of-the-month-sfgraph\/\">sfgraph<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>sfbandpass implements bandpass filtering using the Butterworth algorithm. The desired bandwidth is specified by low and high frequencies (in Hertz) flo= and fhi=. A continuous low-pass Butterworth filter is given by $$B_N^2(\\omega) = \\displaystyle \\frac{1}{\\displaystyle 1+\\left(\\frac{\\omega}{\\omega_0}\\right)^{2N}}$$ The actual filtering is implemented by recursive (Infinite Impulse Response) convolution in the time domain. The number of poles [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","activitypub_content_warning":"","activitypub_content_visibility":"local","activitypub_max_image_attachments":4,"activitypub_interaction_policy_quote":"","footnotes":""},"categories":[3],"tags":[],"class_list":["post-309","post","type-post","status-publish","format-standard","hentry","category-programs"],"_links":{"self":[{"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/posts\/309","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/comments?post=309"}],"version-history":[{"count":3,"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/posts\/309\/revisions"}],"predecessor-version":[{"id":19738,"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/posts\/309\/revisions\/19738"}],"wp:attachment":[{"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/media?parent=309"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/categories?post=309"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ahay.org\/blog\/wp-json\/wp\/v2\/tags?post=309"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}