⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 txtester.asv

📁 一个仿真测试4FSK信号的matlab环境GUI程序。可以查看基带IQ波形、眼图、星座图。并可以仿真高斯白噪声、瑞利衰减对信号的影响。
💻 ASV
📖 第 1 页 / 共 3 页
字号:
set(handles.btn_Apply, 'enable', 'on');

% --- Executes during object creation, after setting all properties.
function edt_RRC_RollOff_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), ...
        get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end

% ==============================================================
% --- Executes on button press in btn_Plot.
function btn_Plot_Callback(hObject, eventdata, handles)
set(handles.output, 'Pointer', 'watch');
data = handles.data;
param = GetParam(handles);
val = get(handles.list_Signal, 'value');
axes(handles.axes_main);
switch val
    case 1
        t = [0:length(data.yFading)-1]'/(4800*param.mod.nSamp*param.rrc.OverSamp);
        plot(t, real(data.yFading), 'b-');
        maxLen = length(data.yFading);
        strTitle = handles.AxesTitle_Plot_ISigImported;
        strxLabel = 'Time(s)';
        stryLabel = 'Amplitude';
    case 2
        t = [0:length(data.yFading)-1]'/(4800*param.mod.nSamp*param.rrc.OverSamp);
        plot(t, imag(data.yFading), 'r-');
        maxLen = length(data.yFading);
        strTitle = handles.AxesTitle_Plot_QSigImported;
        strxLabel = 'Time(s)';
        stryLabel = 'Amplitude';
    case 3
        plot(real(data.yFading), imag(data.yFading), 'c-');
        maxLen = length(data.yFading);
        strTitle = handles.AxesTitle_Plot_IQPhaseImported;
        strxLabel = 'In-Phase Signal';
        stryLabel = 'Quadrature-Phase Signal';
    case 5
        t = [0:length(data.yDown)-1]'/(4800*param.mod.nSamp);
        maxLen = length(data.yDown);
        plot(t, real(data.yDown), 'b-');
        strTitle = handles.AxesTitle_Plot_ISigFilter;
        strxLabel = 'Time(s)';
        stryLabel = 'Amplitude';
    case 6
        t = [0:length(data.yDown)-1]'/(4800*param.mod.nSamp);
        maxLen = length(data.yDown);
        plot(t, imag(data.yDown), 'r-');
        strTitle = handles.AxesTitle_Plot_QSigFilter;
        strxLabel = 'Time(s)';
        stryLabel = 'Amplitude';
    case 7
        maxLen = length(data.yDown);
        plot(real(data.yDown), imag(data.yDown), 'c-');
        strTitle = handles.AxesTitle_Plot_IQPhaseFilter;
        strxLabel = 'In-Phase Signal';
        stryLabel = 'Quadrature-Phase Signal';
    case 9
        t = [0:length(data.z)-1]'/4800;
        maxLen = length(data.z);
        stem(t, data.z, 'm.');
        strTitle = handles.AxesTitle_Plot_DemodSig;
        strxLabel = 'Time (s)';
        stryLabel = 'Amplitude';
        axis([0 max(t) -5 5]);
    case 11
        maxLen = length(data.rrcfltcoef);
        plot(data.rrcfltcoef, 'r.');
        strTitle = handles.AxesTitle_Plot_RRCcoef;
        strxLabel = 'Sample';
        stryLabel = 'Amplitude';
    otherwise
        return
        
end
SetAxes(handles,strTitle,strxLabel,stryLabel);
SetSlider(handles, maxLen);
set(handles.output, 'Pointer', 'arrow');

% =================================================================
function SetAxes(handles, strtitle, strxlabel, strylabel, strzlabel)
if nargin<5
    strzlabel = [];
end
set(handles.axes_main, 'XGrid', 'on');
set(handles.axes_main, 'YGrid', 'on');
set(handles.axes_main, 'XMinorTick', 'on');
set(handles.axes_main, 'YMinorTick', 'on');
title(strtitle);
xlabel(strxlabel);
ylabel(strylabel);
if ~isempty(strzlabel)
    set(handles.axes_main, 'ZGrid', 'on');
    set(handles.axes_main, 'ZMinorTick', 'on');
    zlabel(strzlabel);
end

% ================================================================
function SetSlider(handles,maxLen)
set([handles.slider_AxesAdjust_From, ...
    handles.slider_AxesAdjust_To], 'max', maxLen);
set([handles.slider_AxesAdjust_From, ...
    handles.slider_AxesAdjust_To], 'min', 0);
set(handles.slider_AxesAdjust_From, 'value', 1);
set(handles.slider_AxesAdjust_To, 'value', maxLen);
set(handles.edt_PlotNum_From, 'string', num2str(1));
set(handles.edt_PlotNum_To, 'string', num2str(maxLen));
set([handles.slider_AxesAdjust_From, handles.slider_AxesAdjust_To], ...
    'SliderStep', [8/maxLen,80/maxLen])

% ===================================================================
% --- Executes on button press in btn_Plot3.
function btn_Plot3_Callback(hObject, eventdata, handles)
set(handles.output, 'Pointer', 'watch');
data = handles.data;
param = GetParam(handles);
val = get(handles.list_Signal, 'value');
axes(handles.axes_main);
switch val
    case 3,
        handles.str = [handles.str; ...
            {'->> Plotting I/Q three dimension figure(Imported)...'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01);
        
        t = [0:length(data.yFading)-1]'/(4800*param.mod.nSamp*param.rrc.OverSamp);
        plot3(real(data.yFading), imag(data.yFading), t, 'r-');
        strTitle = handles.AxesTitle_Plot3_IQPhaseImported;
        strxLabel = 'Real part';
        stryLabel = 'Image part';
        strzLabel = 'Time (s)';
        SetAxes(handles, strTitle, strxLabel, stryLabel, strzLabel);
        
        handles.str = [handles.str; ...
            {'->> Plotting I/Q three dimension figure(Imported)... Done!'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01)
    case 7,
        handles.str = [handles.str; ...
            {'->> Plotting I/Q three dimension figure(after filter)...'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01);
        
        t = [0:length(data.yDown)-1]'/(4800*param.mod.nSamp);
        plot3(real(data.yDown), imag(data.yDown), t, 'm-');
        strTitle = handles.AxesTitle_Plot3_IQPhaseFilter;
        strxLabel = 'Real part';
        stryLabel = 'Image part';
        strzLabel = 'Time (s)';
        SetAxes(handles, strTitle, strxLabel, stryLabel, strzLabel);
        
        handles.str = [handles.str; ...
            {'->> Plotting I/Q three dimension figure(after filter)... Done!'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01)
    otherwise
        return
end
set(handles.output, 'Pointer', 'arrow');

% --- Executes on button press in btn_Polar.
function btn_Polar_Callback(hObject, eventdata, handles)
set(handles.output, 'Pointer', 'watch');
data = handles.data;
param = GetParam(handles);
val = get(handles.list_Signal, 'value');
axes(handles.axes_main);
switch val
    case 3,
        handles.str = [handles.str; {'->> Polar coordinate plot(Imported)...'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01);
        
        polar(unwrap(angle(data.yFading)), abs(data.yFading), 'b.');
        strTitle = handles.AxesTitle_Polar_IQPhaseImported;
        strxLabel = 'Angle (radian)';
        stryLabel = 'Radius';
        SetAxes(handles, strTitle, strxLabel, stryLabel);
        
        handles.str = [handles.str; {'->> Polar coordinate plot(Imported)... Done!'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01)
    case 7,
        handles.str = [handles.str; {'->> Polar coordinate plot(after filter)...'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01);
        
        polar(unwrap(angle(data.yDown)), abs(data.yDown), 'b.');
        strTitle = handles.AxesTitle_Polar_IQPhaseFilter;
        strxLabel = 'Angle (radian)';
        stryLabel = 'Radius';
        SetAxes(handles, strTitle, strxLabel, stryLabel);
        
        handles.str = [handles.str; {'->> Polar coordinate plot(after filter)... Done!'}];
        set(handles.edt_Process, 'string', handles.str);
        pause(0.01)
    otherwise
        return
end
set(handles.output, 'Pointer', 'arrow');

% --- Executes on button press in btn_ScatterPlot.
function btn_ScatterPlot_Callback(hObject, eventdata, handles)
% hObject    handle to btn_ScatterPlot (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
param = GetParam(handles);
if get(handles.chkb_NewFigure, 'value'),
    if get(handles.radiobutton1, 'value'),
        scatterplot(handles.data.yFading, 2);
    else
        if get(handles.radiobutton2, 'value'),
            scatterplot(handles.data.yDown, 2);
        end
    end
else
    %handles.hScatter = scatterplot
end



% ===================================================================
% radiobutton callback function
function radiobutton1_Callback(hObject, eventdata, handles)
set(handles.radiobutton1, 'value', 1);
set(handles.radiobutton2, 'value', 0);
function radiobutton2_Callback(hObject, eventdata, handles)
set(handles.radiobutton1, 'value', 0);
set(handles.radiobutton2, 'value', 1);

% ===================================================================
% --- Executes on button press in btn_Import.
function btn_Import_Callback(hObject, eventdata, handles)
handles.str = [handles.str; {'->> Importing modulated data...'}];
set(handles.edt_Process, 'string', handles.str);
pause(0.01);

nSamp = str2num(get(handles.edt_Mod_nSamp, 'string'));
OverSamp = str2num(get(handles.edt_RRC_OverSamp, 'string'));

path = strcat(handles.CurrentPath, '\Data\');
cd(path);
[FileName,PathName,FilterIndx] = uigetfile(...
    {'*.txt', 'text files(*.txt)'; '*.*', 'All files(*.*)'}, ...
    'Import Data');
if FilterIndx,
    fid = fopen(FileName, 'r');
    [Data, Count] = fscanf(fid, '%f');
    fclose(fid);
    rData = Data(1:2:end);
    iData = Data(2:2:end);
    Data = rData + j*iData;
    handles.data.yFading = Data;
    guidata(handles.output, handles);
    set(handles.btn_Apply, 'enable', 'on')
    handles.str = [handles.str; {'->> Importing modulated data... Done!'}];
    set(handles.edt_Process, 'string', handles.str);
    pause(0.01);
else
    handles.str = [handles.str; ...
        {'->> Importing modulated data... Failed, user cancel!'}];
    set(handles.edt_Process, 'string', handles.str);
    pause(0.01);
end

cd(handles.CurrentPath);

% --- Executes on button press in btn_Save.
function btn_Save_Callback(hObject, eventdata, handles)
% hObject    handle to btn_Save (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)


% ======================================================================
% --- Executes on button press in btn_Apply.
function btn_Apply_Callback(hObject, eventdata, handles)
set(handles.output, 'Pointer', 'watch');
handles.str = [handles.str; {'->> Getting parameters...'}];
set(handles.edt_Process, 'string', handles.str);
pause(0.01);

param = GetParam(handles);
Data = handles.data;
handles.str = [handles.str; {'->> Getting parameters... Done!'}];
set(handles.edt_Process, 'string', handles.str);
pause(0.01);

handles.str = [handles.str; {'->> Filtering imported Data...'}];

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -