?? receivertest.m
字號(hào):
end
set(handles.btn_Apply, 'enable', 'on');
% --- Executes during object creation, after setting all properties.
function edt_Fading_DelayVec_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% ================================================================
% --- Executes on button press in chkb_AWGN.
function chkb_AWGN_Callback(hObject, eventdata, handles)
if get(handles.chkb_AWGN,'value')
set(handles.edt_AWGN_EbNo,'enable','on');
else
set(handles.edt_AWGN_EbNo,'enable','off');
end
set(handles.btn_Apply, 'enable', 'on');
% --- Executes on button press in chkb_Fading.
function chkb_Fading_Callback(hObject, eventdata, handles)
if get(handles.chkb_Fading,'value')
set([handles.edt_Fading_FrqShift, handles.edt_Fading_DelayVec, ...
handles.edt_Fading_GainVec], 'enable', 'on');
else
set([handles.edt_Fading_FrqShift, handles.edt_Fading_DelayVec, ...
handles.edt_Fading_GainVec], 'enable', 'off');
end
set(handles.btn_Apply, 'enable', 'on');
% ====================================================================
function edt_Fading_GainVec_Callback(hObject, eventdata, handles)
value = str2num(get(handles.edt_Fading_GainVec,'string'));
if isempty(value)
msgbox('Get a invalid number in the ''Gain Vec'' Edit field. Check again!','ERROR','ERROR');
return
end
set(handles.btn_Apply, 'enable', 'on');
% --- Executes during object creation, after setting all properties.
function edt_Fading_GainVec_CreateFcn(hObject, eventdata, handles)
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end
% =====================================================================
% --- Executes on button press in btn_LoadParam.
function btn_LoadParam_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Importing Parameters...');
pause(0.01);
path = strcat(handles.CurrentPath, '\Parameters\');
cd(path);
[FileName,PathName,FilterIndx] = ...
uigetfile({'*.mat','Mat-files(*.mat)';'*.*','All files(*.*)'},'Import Parameters');
if FilterIndx
load(FileName);
if exist('param','var')
SetParam(handles, param);
set(handles.txt_Status, 'string', 'Status: Importing Parameters... Done');
pause(0.01)
else
set(handles.txt_Status, 'string', ...
'Status: Importing Parameters... Failed, wrong format parameter');
pause(0.01);
end
else
set(handles.txt_Status, 'string', ...
'Status: Importing Parameters... Failed, user cancel!');
pause(0.01);
end
cd(handles.CurrentPath);
set(handles.btn_Apply, 'enable', 'on');
% --- Executes on button press in btn_SaveParam.
function btn_SaveParam_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Saving Parameters...');
pause(0.01)
param = GetParam(handles);
path = strcat(handles.CurrentPath, '\Parameters\');
cd(path);
[FileName,PathName,FilterIndx] = ...
uiputfile({'*.mat','Mat-files(*.mat)';'*.*','All files(*.*)'},'Save Parameters');
if FilterIndx
save(FileName, 'param');
set(handles.txt_Status, 'string', 'Status: Saving Parameters... Done');
pause(0.01)
else
set(handles.txt_Status, 'string', ...
'Status: Saving Parameters... Failed, user cancel!');
pause(0.01)
end
cd(handles.CurrentPath);
% --- Executes on button press in btn_SaveResult.
function btn_SaveResult_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Saving Result Data...');
pause(0.01);
y_Len = length(handles.data.yFading);
Data = [real(handles.data.yFading)'; imag(handles.data.yFading)'];
path = strcat(handles.CurrentPath, '\Data\');
cd(path);
[FileName,PathName,FilterIndx] = ...
uiputfile({'*.txt','text files(*.txt)';'*.*','All files(*.*)'},'Save Result Data');
if FilterIndx
fid = fopen(FileName, 'w');
hPro = waitbar(0,'Save Data','Name','Saving Data...');
pause(0.01);
interval = fix(y_Len/100);
for i = 1:100
fprintf(fid, '%8.7f\t%8.7f\n', Data(:,(i-1)*interval+1:i*interval));
waitbar(i/100, hPro, ['Percentage:',num2str(i),'% '], hPro);
end
fprintf(fid, '%8.7f\t%8.7f\n', Data(:,i*interval+1:y_Len));
close(hPro);
fclose(fid);
set(handles.txt_Status, 'string', 'Status: Saving Result Data... Done');
pause(0.01);
else
set(handles.txt_Status, 'string', ...
'Status: Saving Result Data... Failed, user cancel!');
pause(0.01)
end
cd(handles.CurrentPath);
% --- Executes on button press in btn_SaveSource.
function btn_SaveSource_Callback(hObject, eventdata, handles)
% hObject handle to btn_SaveSource (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
set(handles.txt_Status, 'string', 'Status: Saving Source Signal...');
pause(0.01);
Len = length(handles.data.x);
path = strcat(handles.CurrentPath, '\Source\');
cd(path);
[FileName,PathName,FilterIndx] = ...
uiputfile({'*.txt','text files(*.txt)';'*.*','All files(*.*)'},'Save Source');
if FilterIndx
fid = fopen(FileName, 'w');
hPro = waitbar(0,'Save Data','Name','Saving Source...');
pause(0.01);
interval = fix(Len/100);
for i = 1:100
fprintf(fid, '%d\n', handles.data.x((i-1)*interval+1:i*interval));
waitbar(i/100, hPro, ['Percentage:',num2str(i),'% '], hPro);
end
close(hPro);
fclose(fid);
set(handles.txt_Status, 'string', 'Status: Saving Source Signal... Done');
pause(0.01);
else
set(handles.txt_Status, 'string', ...
'Status: Saving Source Signal... Failed, user cancel!');
pause(0.01)
end
cd(handles.CurrentPath);
% --- Executes on button press in btn_Apply.
function btn_Apply_Callback(hObject, eventdata, handles)
set(handles.txt_Status, 'string', 'Status: Collecting and Checking Parameters...');
set(handles.output, 'Pointer', 'watch');
pause(0.01);
param = GetParam(handles);
set(handles.txt_Status, 'string', 'Status: Collecting and Checking Parameters... Done');
pause(0.01);
% -------------------------------------------------------------------
% Generate source signal
set(handles.txt_Status, 'string', 'Status: Generating Source Signal...');
pause(0.01);
Data.x = randsrc(param.src.BitNum/2,1,[0:3],param.src.InitSeed);
Data.x = 2*(Data.x+1)-5;
%assignin('base', 'x',Data.x);
set(handles.txt_Status, 'string', 'Status: Generating Source Signal... Done');
pause(0.01)
% modulation using CP4FSK method
set(handles.txt_Status, 'string', 'Status: Modulating signal using CP4FSK...');
pause(0.01);
Data.y = cpfskmod_new(Data.x,4,param.mod.Index,param.mod.nSamp,param.mod.Fd);
assignin('base', 'y', Data.y);
set(handles.txt_Status, 'string', 'Status: Modulating signal using CP4FSK... Done');
pause(0.01);
set(handles.txt_Status, 'string', 'Status: Filtering data using RRC filter...');
pause(0.01);
% filter designed
rrcfltcoef = rcosine(param.mod.Fd*param.mod.nSamp, ...
param.mod.Fd*param.mod.nSamp*param.rrc.OverSamp, 'fir/sqrt', ...
param.rrc.RollOff, param.rrc.Delay);
% up sample the signal
yUp = upsample(Data.y, param.rrc.OverSamp);
% conpensated
yUp = [yUp;zeros(param.rrc.Order,1)];
% filter
Data.yTx = filter(rrcfltcoef,1,yUp);
assignin('base','yTx',Data.yTx);
set(handles.txt_Status, 'string', 'Status: Filtering data using RRC filter... Done');
pause(0.01);
% adding noise
set(handles.txt_Status, 'string', 'Status: Adding noise and fading...');
pause(0.01);
if get(handles.chkb_AWGN, 'value')
Data.yNoise = awgn(Data.yTx,param.awgn.EbNo,'measured',12345,'db');
else
Data.yNoise = Data.yTx;
end
if get(handles.chkb_Fading, 'value')
chan = rayleighchan(param.fading.Td, param.fading.FrqShift, ...
param.fading.DelayVec, param.fading.GainVec);
Data.yFading = filter(chan, Data.yNoise);
else
Data.yFading = Data.yNoise;
end
set(handles.txt_Status, 'string', 'Status: Ading noise and fading... Done');
pause(0.01);
assignin('base', 'yFading', Data.yFading);
%set(handles.txt_Status, 'string', 'Status: Filtering received data...');
%pause(0.01);
% received filter
%yRx = filter(rrcfltcoef, 1, Data.yFading);
% down sample
%yDown = downsample(yRx,param.rrc.OverSamp);
% conpensated
%Data.yDown = yDown(param.rrc.Order/param.rrc.OverSamp+1:end);
%set(handles.txt_Status, 'string', 'Status: Filtering received data... Done');
%pause(0.01);
% demodulation, using cp4fsk demod function
%set(handles.txt_Status, 'string', 'Status: Demodulation... ');
%pause(0.01);
%Data.z = cpfskdemod_new(Data.yDown,4,param.mod.Index,param.mod.nSamp,param.mod.Fd);
%set(handles.txt_Status, 'string', 'Status: Demodulation... Done');
%pause(0.01);
%assignin('base', 'z',Data.z);
% Starting plot.
set(handles.txt_Status, 'string', 'Status: Starting plot... ');
pause(0.01)
axes(handles.axes_Src);
stem(Data.x,'ro-');
axis([0 50 -4 4]);
set(handles.axes_Src,'XGrid','on');
set(handles.axes_Src,'YGrid','on');
set(handles.axes_Src,'XMinorTick','on');
set(handles.axes_Src,'YMinorTick','on');
title('Source Signal');xlabel('Number');ylabel('Amplitude');
axes(handles.axes_RRC);
plot(rrcfltcoef,'r.');
set(handles.axes_RRC, 'xLim', [0 param.rrc.Order]);
set(handles.axes_RRC, 'XGrid','on');
set(handles.axes_RRC, 'YGrid','on');
set(handles.axes_RRC,'XMinorTick','on');
set(handles.axes_RRC,'YMinorTick','on');
title('Square Root Raised Cosine Filter-Impluse Response');
xlabel('Sample');ylabel('Amplitude');
set(handles.txt_Status, 'string', 'Status: Starting plot... Done');
pause(0.01)
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -