同的单音频传输,所用的8个频率分成高频带和低频带两组,低频带有四个频率:679Hz、770Hz、852Hz及941Hz;高频带也有四个频率:1209Hz、1336Hz、1477Hz及1633Hz。每一个数字均由高、低频带中各一个频率构成。 其次,对于数字信号处理中很多理解不清晰的问题也加深了理解,也对DFT有了更深一层的理解,并且学习到计算DFT的新算法: Goerztel函数,更加方便了DFT的计算。若有机会接触到双音多频,可针对音频信号的频率检测进行深一步的研究双音频,如作为控制信号时,可以在有线网络或无线网络中通过广播形式发出,实现有效的通信识别和可靠的远程控制,以保证广播系统运行的安全和稳定等实际生活中的运用。
再次,对于MATLAB的设计也更加清晰明了,matlab用起来挺顺手的,比C语言简单。但是用到细节处的时候却困难重重,因为很多知识都没有学习,就算知道函数名,也不知道如何调用。通过自己查询相关资料,克服了相关的问题,使自己对MATLAB的认识及应用也进入了一个新的层次。
总而言之,通过本次试验,加深了对于Matlab的了解,同时复习了数字信号方面的相关知识,对于还不太清楚的相关知识,通过进一步的查找得到了很好的解决。了解了双音多频信号的产生、包括对双音多频信号进行DFT时的参数选择等的相关知识。在做MATLAB界面,做好以后同时会产一个M文件,只要把代码编写在对应的控件中即可以方便的实现仿真。实验结果表明基于MATLAB的DTMF编解码具有速度快、精度高、稳定性好以及便于灵活应用等特点。而利用MATLAB语言可以较好地、快速地进行算法的仿真。 成员总结
何杰坤:通过这次课程设计,对用GUI做界面有了更深的认识,也对用MATLAB做音频处理有了一些基础的认识;让我学到了很多知识,也学习到了很多和matlab相关的知识。虽然只是模拟通话,但是我还是希望在硬件实现上有所提高。
蔡小红:课程设计使我熟悉基本的Matlab仿真的使用,还意识到英文水平的重要性,我们学习通信专业的,还需要了解更多的专业英文,此外这次课程设计还加深了对于数字信号处理原理知识的理解。
王晓清:通过本次课程设计,对MATLAB软件有了更深刻的了解和应用,把动手设计和课本知识紧密的联系起来。明白团队意识的重要性,最后让自己对设计报告的编写有了新的认识。
苏月琴:学习到关于matlab的一些新知识。对团队力量有了新的认识。意识到团队的重要,和前期策划的重要。认识到自己还需加强团队合作能力。
罗 烨:在这次课设中,我不仅学到了很多编程知识,更学到了遇到问题时解决的方法。并且意识到在一个项目里团队合作比任何都来得重要。
王垚天:这次课程设计最大的感想是不管学什么东西,都要自己真真实实的动手去做。因为我自己本来偏向于网络硬件方面的,对软件一直不是很擅长,但是在课程设计中,自己真的去思考一个功能的实现,一个代码的编写时,才突然发现其实并没有想象中那么困难。 七、参考文献
1.《数字信号处理课程设计指导书》
2.《数字信号处理教程》,程佩青,清华大学出版社,2007
3.《MATLAB数字信号处理与应用》,李正周,北京清华大学出版社,2008
4.《双音多频信号产生及解码研究》赵霞,微电子学,2001年,第6期 5.数字信号处理及MATLAB实现,余成波、杨菁、杨如民、周登义,清华大学出版社,2005
八、附录:主要程序
function varargout = main(varargin) gui_Singleton = 1;
gui_State = struct('gui_Name', mfilename, ... 'gui_Singleton', gui_Singleton, ... 'gui_OpeningFcn', @main_OpeningFcn, ... 'gui_OutputFcn', @main_OutputFcn, ... 'gui_LayoutFcn', [] , ... 'gui_Callback', []); if nargin && ischar(varargin{1}) = str2func(varargin{1}); end if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:}); else
gui_mainfcn(gui_State, varargin{:}); end
function main_OpeningFcn(hObject, eventdata, handles, varargin) = hObject;
guidata(hObject, handles);
function varargout = main_OutputFcn(hObject, eventdata, handles) varargout{1} = ;
function pushbutton1_Callback(hObject, eventdata, handles) global num_string; global bool;
num_string=strcat(num_string,'1'); set,'string',num_string); if bool==0; Music(1); else
Signal(1); end
function pushbutton2_Callback(hObject, eventdata, handles) global num_string;global bool; num_string=strcat(num_string,'2'); set,'string',num_string); if bool==0; Music(2); else
Signal(2); end
function pushbutton3_Callback(hObject, eventdata, handles) global num_string;global bool; num_string=strcat(num_string,'3'); set,'string',num_string); if bool==0; Music(3); else
Signal(3); end
function pushbutton4_Callback(hObject, eventdata, handles) global num_string;global bool; num_string=strcat(num_string,'4'); set,'string',num_string); if bool==0; Music(4); else
Signal(4); end
function pushbutton5_Callback(hObject, eventdata, handles) global num_string;global bool; num_string=strcat(num_string,'5'); set,'string',num_string); if bool==0; Music(5); else
Signal(5); end
function pushbutton6_Callback(hObject, eventdata, handles) global num_string;global bool; num_string=strcat(num_string,'6'); set,'string',num_string); if bool==0; Music(6); else
Signal(6); end
function pushbutton7_Callback(hObject, eventdata, handles) global num_string;global bool; num_string=strcat(num_string,'7'); set,'string',num_string); if bool==0; Music(7); else
Signal(7);