傅里叶变换尺度变换性质_关于傅里叶变换又遇到一个非常烧脑的事情

傅里叶变换:

在之前的学习中我们知道了傅里叶变换在

内是可以定义的,并且在
内是保
距离的,换句话说如果
,那么
,最后我们有
内稠密——结合这三条性质,我们得出的结论是傅里叶变换在
内是可以定义的,理由如下:
我们可以选择
内的一个函数列
,那么由极限的定义,它们是柯西列,这也就意味着
;此时根据保距性质,
,这也就意味着
也是
的柯西列,根据
的完备性,它必然收敛于
的函数
,我们将它定义为
的傅里叶变换。

同时,对于两个不同的函数列,我们总可以把它们合并成一个函数列,这个函数列收敛于
,并且它的傅里叶变换的极限同时是两个子列的极限,这也就意味着两个子列的极限一定是相同的,因此定义的良好性(意即极限不依逼近方式改变)得证。

我看了这一段很久,看起来证明是完美的,嗯,简单而完美,应该就是这样。但是真的没问题吗?总感觉哪里有点不安,这种不安究竟从何而来?

几个小时之后我发现了不安的源头。特别地,我们考虑函数

,它显然是
的元素,因为它有界并且以
的速度消失。在黎曼反常积分的意义下我们知道它的定积分是
但这不重要,因为现在我们考虑的是勒贝格积分,而勒贝格积分不像黎曼一维积分要求连续的区间,它可以把区间拆碎了打散了把所有正项部分拼在一起。

根据定义,我们想要选取

内收敛于它的一个函数列,特别地,我们可以考虑函数列
,其中
,而
是个紧集族,并且单调趋于

简单地说,就是将

限制于一个有界的集合上,这个集合不一定是连续的,比如可以是
,也可以是
,但是不管怎么样最后我们要让这个紧集越来越大,并最终填满整个
,之后我们计算
并求它的极限。

好的,接下来开始记算。根据定义,

,并且我们知道,

现在发现问题了吗?我们实际上是在用紧集上的黎曼积分逼近它的黎曼反常积分。而为什么黎曼反常积分要求区间必须是连续的,而有的函数即使存在黎曼反常积分也不存在勒贝格积分?就是因为它是“条件收敛”,而非绝对收敛的!回想起黎曼重排定理,如果一个数列是条件收敛的,那么一定可以通过重排使得它收敛于任何一个实数,因此对于“条件收敛”的反常积分,也一定可以通过积分区间的重排而使得它收敛于任何实数,甚至是发散。比如,我可以每次向我的紧集里加入一个负值区间,之后加入一大堆正值区间,使得正值区间上的定积分远超过负值区间上的定积分,这样最终极限一定会是正无穷大。

这一段也是这么的显而易见以至于我根本不屑于怀疑它的正确性而构造一个具体的趋于无穷大的例子。

接下来我又开始审视之前的证明,但是之前的证明也正确得显而易见,我不知道问题究竟出在哪里。


最后我意识到,取极限是在

内完成的,而少量点上的函数取值其实在
内是可以被忽略的。另一方面,
实际上是一个振频依据
而改变的振荡函数。对于某一个
,当我为了使得
的定积分趋于某一个我想要的值而挑选
时,我无法同时顾及其他的
.

也就是说,即便我处心积虑地选出了针对某一个

的正项区间,这最多对与它在有理数域上“线性相关”的那些
有效,比如
,而对于其他的
来说,它们的相对正负性几乎是随机而均匀分布于整个
上的(也就是说它们的同号区域与异号区域极为分散,几乎是互相打乱的),因此最终对于那些线性无关的
,它们的变换值巧合一般地收敛于了它们应有的位置。

至此问题解决。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MATLAB中的傅立叶变换是一种非常常用的信号处理方法,可以用于分析信号的频率特征。而尺度变换是指对信号进行缩放以改变其时间尺度,例如将信号放大或缩小。基于MATLAB GUI的傅里叶变换分析的仿真设计可以方便地进行信号处理和分析。 下面是一个简单的MATLAB GUI程序,用于进行傅立叶变换尺度变换的仿真设计: ```matlab function varargout = FourierTransform(varargin) % FOURIERTRANSFORM MATLAB code for FourierTransform.fig % FOURIERTRANSFORM, by itself, creates a new FOURIERTRANSFORM or raises the existing % singleton*. % % H = FOURIERTRANSFORM returns the handle to a new FOURIERTRANSFORM or the handle to % the existing singleton*. % % FOURIERTRANSFORM('CALLBACK',hObject,eventData,handles,...) calls the local % function named CALLBACK in FOURIERTRANSFORM.M with the given input arguments. % % FOURIERTRANSFORM('Property','Value',...) creates a new FOURIERTRANSFORM or raises the % existing singleton*. Starting from the left, property value pairs are % applied to the GUI before FourierTransform_OpeningFcn gets called. An % unrecognized property name or invalid value makes property application % stop. All inputs are passed to FourierTransform_OpeningFcn via varargin. % % *See GUI Options on GUIDE's Tools menu. Choose "GUI allows only one % instance to run (singleton)". % % See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help FourierTransform % Last Modified by GUIDE v2.5 19-Aug-2021 12:00:06 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @FourierTransform_OpeningFcn, ... 'gui_OutputFcn', @FourierTransform_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) gui_State.gui_Callback = str2func(varargin{1}); end if nargout [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else gui_mainfcn(gui_State, varargin{:}); end % End initialization code - DO NOT EDIT % --- Executes just before FourierTransform is made visible. function FourierTransform_OpeningFcn(hObject, eventdata, handles, varargin) % This function has no output args, see OutputFcn. % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % varargin command line arguments to FourierTransform (see VARARGIN) % Choose default command line output for FourierTransform handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes FourierTransform wait for user response (see UIRESUME) % uiwait(handles.figure1); % --- Outputs from this function are returned to the command line. function varargout = FourierTransform_OutputFcn(hObject, eventdata, handles) % varargout cell array for returning output args (see VARARGOUT); % hObject handle to figure % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structure varargout{1} = handles.output; % --- Executes on button press in load_button. function load_button_Callback(hObject, eventdata, handles) % hObject handle to load_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) [file, path] = uigetfile({'*.wav;*.mp3;*.mp4;*.avi','All Audio and Video Files';'*.wav','WAV Files (*.wav)';'*.mp3','MP3 Files (*.mp3)';'*.mp4','MP4 Files (*.mp4)';'*.avi','AVI Files (*.avi)'},'Choose an audio or video file'); if isequal(file,0) || isequal(path,0) return; else [audio, fs] = audioread(fullfile(path,file)); handles.audio = audio; handles.fs = fs; axes(handles.original_audio); plot(audio); xlabel('Time (s)'); ylabel('Amplitude'); title('Original Audio'); guidata(hObject, handles); end % --- Executes on button press in play_button. function play_button_Callback(hObject, eventdata, handles) % hObject handle to play_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) sound(handles.audio, handles.fs); % --- Executes on button press in FFT_button. function FFT_button_Callback(hObject, eventdata, handles) % hObject handle to FFT_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) audio = handles.audio; fs = handles.fs; L = length(audio); NFFT = 2^nextpow2(L); Y = fft(audio, NFFT)/L; f = fs/2*linspace(0,1,NFFT/2+1); axes(handles.FFT_plot); plot(f, 2*abs(Y(1:NFFT/2+1))); xlabel('Frequency (Hz)'); ylabel('|Y(f)|'); title('Single-Sided Amplitude Spectrum of y(t)'); % --- Executes on button press in scale_button. function scale_button_Callback(hObject, eventdata, handles) % hObject handle to scale_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) audio = handles.audio; fs = handles.fs; scale_factor = str2double(get(handles.scale_factor_edit, 'String')); scaled_audio = resample(audio, scale_factor, 1); axes(handles.scaled_audio); plot(scaled_audio); xlabel('Time (s)'); ylabel('Amplitude'); title(['Scaled Audio (' num2str(scale_factor) 'x)']); handles.scaled_audio = scaled_audio; guidata(hObject, handles); function scale_factor_edit_Callback(hObject, eventdata, handles) % hObject handle to scale_factor_edit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) % Hints: get(hObject,'String') returns contents of scale_factor_edit as text % str2double(get(hObject,'String')) returns contents of scale_factor_edit as a double % --- Executes during object creation, after setting all properties. function scale_factor_edit_CreateFcn(hObject, eventdata, handles) % hObject handle to scale_factor_edit (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles empty - handles not created until after all CreateFcns called % Hint: edit controls usually have a white background on Windows. % See ISPC and COMPUTER. if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor')) set(hObject,'BackgroundColor','white'); end % --- Executes on button press in scaled_FFT_button. function scaled_FFT_button_Callback(hObject, eventdata, handles) % hObject handle to scaled_FFT_button (see GCBO) % eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) scaled_audio = handles.scaled_audio; fs = handles.fs; L = length(scaled_audio); NFFT = 2^nextpow2(L); Y = fft(scaled_audio, NFFT)/L; f = fs/2*linspace(0,1,NFFT/2+1); axes(handles.scaled_FFT_plot); plot(f, 2*abs(Y(1:NFFT/2+1))); xlabel('Frequency (Hz)'); ylabel('|Y(f)|'); title('Single-Sided Amplitude Spectrum of y(t) (Scaled)'); ``` 这个GUI程序包括以下组件: - load_button:加载音频文件 - play_button:播放音频文件 - FFT_button:将音频信号进行傅立叶变换,并绘制频谱图 - scale_factor_edit和scale_button:对音频信号进行尺度变换,并绘制缩放后的信号图 - scaled_FFT_button:对缩放后的信号进行傅立叶变换,并绘制频谱图 使用该程序,您可以通过以下步骤进行傅立叶变换尺度变换的仿真设计: 1. 运行程序,并单击“load_button”按钮以加载音频文件。 2. 单击“play_button”按钮以播放音频文件。 3. 单击“FFT_button”按钮以进行傅立叶变换,并绘制频谱图。 4. 在“scale_factor_edit”文本框中输入缩放因子,并单击“scale_button”按钮以对音频信号进行尺度变换,并绘制缩放后的信号图。 5. 单击“scaled_FFT_button”按钮以对缩放后的信号进行傅立叶变换,并绘制频谱图。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值