📄 s_fft.m
字号:
function [ftseismic,aux]=s_fft(seismic,varargin)% Function computes amplitude spectrum or Fourier transform of the traces of % the seismic input data set%% Written by: E. R., February 19, 2001% Last updated: November 14, 2004: Add output argument aux%% [ftseismic.aux]=s_fft(seismic,varargin)% INPUT% seismic seismic data set% varargin one or more cell arrays; the first element of each cell array is a% keyword, the other elements are parameters. Presently, keywords are:% 'output' type of output. Possible values are:% 'amp' amplitude spectrum% 'ft' Fourier transform (complex)% Default: {'output','amp'}% 'df' sample interval in the frequency domain (achieved by padding)% only used if it is less than the default sample interval% 1/(seismic.last-seismic.first)% Default: {'df',[]} % use sample interval 2*Nyquist_frequency/(number_of_samples_per_trace - 1 )% OUTPUT% ftseismic Amplitude spectrum or Fourier transform of traces of seismic input data% aux Auxiliary data% 'frequencies' vector of frequencies; i.e. ftseismic.first:ftseismic.step:ftseismic.last% Set default parametersparam.output='amp';param.df=[];param.window=[];% Decode input argumentsparam=assign_input(param,varargin);if isfield(seismic,'null') seismic=s_rm_trace_nulls(seismic);endnsamp=size(seismic.traces,1);nyquist=500/seismic.step;if ~isempty(param.df) & param.df > 0 nfft=2*nyquist/param.df;else nfft=nsamp;endfreq=(0:2:nfft)*nyquist/nfft;ftseismic.first=0;ftseismic.last=freq(end);ftseismic.step=freq(2);ftseismic.units='Hz';if isempty(param.window) temp=seismic.traces;else try wndw=mywindow(nsamp,param.window); temp=zeros(nsamp,ntr); for ii=1:ntr temp(:,ii)=seismic.traces(:,ii).*wndw; end catch temp=seismic.traces; alert(['Window "',param.window,'" could not be applied']) endend% Number of samples in the frequency domainnsamp=round(ftseismic.last/ftseismic.step)+1;ftseismic.traces=fft(temp,nfft);ftseismic.traces=ftseismic.traces(1:nsamp,:);if strcmpi(param.output,'amp') ftseismic.traces=abs(ftseismic.traces); htext='Amplitude spectrum';else htext='Fourier transform';endif nargout > 1 aux.frequencies=freq;end% Copy rest of fieldsftseismic=copy_fields(seismic,ftseismic);% Append history fieldif isfield(seismic,'history') ftseismic=s_history(ftseismic,'append',htext);end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -