说明正确性 2 具体实现:
因为数字和字母按键实现的方式基本相同,区别在于每个按键的行、列的频率不同。因此调用一样的模块函数来实现达到简化程序;
% PressKeyDown.m
function Signal = PressKeyDown(handles,key)
实现输出和画出时域及频域的波形,并播放出声音。
%dtmf.m
function x = dtmf(key);
根据不同的按键选择不同的频率画出两个cos相加。 % wav_gener.m
function h = wav_gener(R,omega,N) 产生两个cos信号相加 % FindLowerFreq.m DesignLowerFilter.m 设计低频带通
找出低频的列
% FindHigherFreq.m % DesignHigherFilter.m
设计高频带通
找出高频的行
3 主要按键的Callback 函数如下
- 15 -
按键“1”的Callback 函数
function pushbutton1_Callback(hObject, eventdata, handles) % hObject handle to pushbutton21 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.DecodeText,'string',''); %清空解码显示文本框
Signal = PressKeyDown(handles,'1'); handles.DTMFSignal = Signal;
handles.TelNumber=strcat(handles.TelNumber,'1'); guidata(hObject, handles);
set(handles.CodeText,'string',handles.TelNumber); % --- Executes on button press in pushbutton2.
按键”解码检测”的Callback
function pushbutton17_Callback(hObject, eventdata, handles) % hObject handle to pushbutton17 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) keys =
['1','2','3','A';'4','5','6','B';'7','8','9','C';'*','0','#','D']; for i=1 : length(handles.TelNumber) Signal = dtmf(handles.TelNumber(i)); RowNumber = FindLowerFreq(Signal); ColumnNumber = FindHigherFreq(Signal); ResultKey = keys(RowNumber,ColumnNumber);
handles.DecodeTelNumber=strcat(handles.DecodeTelNumber,ResultKey); set(handles.DecodeText,'string',handles.DecodeTelNumber); end
handles.TelNumber=''; %解码完成后,拨号变量清空,方便下一次拨号。 按键“回删”的Callback
function pushbutton21_Callback(hObject, eventdata, handles) % hObject handle to pushbutton21 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) set(handles.CodeText,'string',''); set(handles.DecodeText,'string',''); axes(handles.axes1);
- 16 -
plot(1,1)
axes(handles.axes2); plot(1,1)
h=msgbox('请重新输入一次号码','温馨提示','Help kon')
按键“退出”的Callback
function pushbutton19_Callback(hObject, eventdata, handles) % hObject handle to pushbutton21 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB % handles structure with handles and user data (see GUIDATA) close(gcf);
- 17 -

