📄 commod.m
字号:
modulated = dmod(bf_mod, Fc, Fd, [Fs, pp5], mthd);
elseif isempty(pp3)
modulated = dmod(bf_mod, Fc, Fd, [Fs, pp5], mthd, pp2);
elseif isempty(pp4)
modulated = dmod(bf_mod, Fc, Fd, [Fs, pp5], mthd, pp2, pp3);
else
modulated = dmod(bf_mod, Fc, Fd, [Fs, pp5], mthd, pp2, pp3, pp4);
end;
else
%baseband
if isempty(pp2)
modulated = dmodce(bf_mod, Fd, [Fs, pp5], mthd);
elseif isempty(pp3)
modulated = dmodce(bf_mod, Fd, [Fs, pp5], mthd, pp2);
elseif isempty(pp4)
modulated = dmodce(bf_mod, Fd, [Fs, pp5], mthd, pp2, pp3);
else
modulated = dmodce(bf_mod, Fd, [Fs, pp5], mthd, pp2, pp3, pp4);
end;
end;
end;
else
modulated = code_word;
end;
set(bar_color(2), 'XData',[0 (loop-4/7)/Vaa_len (loop-4/7)/Vaa_len 0])
set(ex_flag(3),'Color',[1 1 1], 'Visible', 'on')
%channel:
set(ex_flag(4),'Color',[1 0 0], 'Visible', 'on')
drawnow
sig_eng = sum(modulated .* conj(modulated));
list_valu = get(popmu(4), 'Value');
if list_valu > 1
p51 = str2num(get(entr_valu(13), 'String'));
p52 = str2num(get(entr_valu(14), 'String'));
p52 = comempty(p52, entr_valu(14), 0);
p53 = str2num(get(entr_valu(15), 'String'));
p53 = comempty(p53, entr_valu(15), 0);
p54 = str2num(get(entr_valu(16), 'String'));
p54 = comempty(p54, entr_valu(16), 0);
if list_valu == 2
p52 = p52+loop;
randn('seed', p52');
if (get(popmu(3), 'Value') ~= 1) & (get(popmu(5), 'Value') == 1)
%complex
nois = randn(length(modulated), 2) * p51(loop);
nois = nois(:, 1) + j*nois(:, 2);
else
% real
nois = randn(length(modulated), 1) * p51(loop);
end;
elseif list_valu == 3
p53 = p53 + loop;
rand('seed', p52');
if (get(popmu(3), 'Value') ~= 1) & (get(popmu(5), 'Value') == 1)
%complex
nois = rand(length(modulated), 2) * (p51(loop) - p52(loop)) - p52(loop);
nois = nois(:, 1) + j*nois(:, 2);
else
% real
nois = randn(length(modulated), 1) * (p51(loop) - p52(loop)) - p52(loop);
end;
elseif list_valu == 4
%N/A
if (get(popmu(3),'Value') ~= 1)
disp('Binary noise can apply to the case without modulation only.')
disp('No noise is added to the simulation.')
nois = 0;
else
p52 = p52 + loop;
randn('seed', p52');
nois = rand(length(modulated), 1) < p51(loop);
end;
elseif list_valu == 5
% your noise
% nois = ???
end;
modulated = modulated + nois;
if list_valu == 4
modulated = rem(modulated, 2);
end;
else
nois = 0;
end;
if list_valu == 4
if p51(loop) > 0
snratio = 1/p51(loop);
else
snratio = Inf;
end;
else
noi_eng = sum(nois .* conj(nois));
if noi_eng ~= 0
snratio = sig_eng/noi_eng;
else
snratio = Inf;
end;
end;
% set(data_h(3), 'UserData', [get(data_h(3), 'UserData'), snratio]);
% set(data_h(3), 'String', mat2str(get(data_h(3), 'UserData'), 6));
set(bar_color(2), 'XData',[0 (loop-3/7)/Vaa_len (loop-3/7)/Vaa_len 0])
set(ex_flag(4),'Color',[1 1 1], 'Visible', 'on')
% demodualtion
set(ex_flag(5),'Color',[1 0 0], 'Visible', 'on')
drawnow
list_valu = get(popmu(3), 'Value');
band_valu = get(popmu(5), 'Value');
if list_valu > 1
if loop == 1
if isempty(pp6) & band_valu == 1
[lpfltnum, lpfltden] = butter(5, Fc * 2 / Fs);
else
lpfltnum = pp6;
lpfltden = pp7;
end;
end;
if band_valu == 1
if list_valu == 2
demodulated = ddemod(modulated, Fc, Fd, [Fs, pp5], 'ask', pp2, lpfltnum, lpfltden);
elseif list_valu == 3
demodulated = ddemod(modulated, Fc, Fd, [Fs, pp5], 'qask', pp2, lpfltnum, lpfltden);
elseif list_valu == 4
demodulated = ddemod(modulated, Fc, Fd, [Fs, pp5], 'qask/cir', pp2, pp3, pp4, lpfltnum, lpfltden);
elseif list_valu == 5
demodulated = ddemod(modulated, Fc, Fd, [Fs, pp5], 'qask/arb', pp2, pp3, lpfltnum, lpfltden);
elseif list_valu == 6
demodulated = ddemod(modulated, Fc, Fd, [Fs, pp5], 'fsk', pp2, pp3);
elseif list_valu == 7
demodulated = ddemod(modulated, Fc, Fd, [Fs, pp5], 'psk', pp2, lpfltnum, lpfltden);
elseif list_valu == 8
demodulated = ddemod(modulated, Fc, Fd, [Fs, pp5], 'msk');
elseif list_valu == 9
% your demodualtion method goes here
end;
else
if list_valu == 2
if isempty(pp6)
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'ask', pp2);
else
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'ask', pp2, lpfltnum, lpfltden);
end
elseif list_valu == 3
if isempty(pp6)
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'qask', pp2);
else
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'qask', pp2, lpfltnum, lpfltden);
end;
elseif list_valu == 4
if isempty(pp6)
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'qask/cir', pp2, pp3, pp4);
else
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'qask/cir', pp2, pp3, pp4, lpfltnum, lpfltden);
end;
elseif list_valu == 5
if isempty(pp6)
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'qask/arb', pp2, pp3);
else
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'qask/arb', pp2, pp3, lpfltnum, lpfltden);
end;
elseif list_valu == 6
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'fsk', pp2, pp3);
elseif list_valu == 7
if isempty(pp6)
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'psk', pp2);
else
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'psk', pp2, lpfltnum, lpfltden);
end;
elseif list_valu == 8
demodulated = ddemodce(modulated, Fd, [Fs, pp5], 'msk');
elseif list_valu == 9
% your demodualtion method goes here
end;
end
else
demodulated = modulated;
bit_numb = 1;
end;
demodulated = de2bi(demodulated, bit_numb)';
demodulated = demodulated(:);
demodulated = demodulated(1:length(code_word));
bit_err = sum(abs(demodulated - code_word)) / length(code_word);
% set(data_h(2), 'UserData', [get(data_h(2), 'UserData'), bit_err]);
% set(data_h(2), 'String', mat2str(get(data_h(2), 'UserData'),6));
set(bar_color(2), 'XData',[0 (loop-2/7)/Vaa_len (loop-2/7)/Vaa_len 0])
set(ex_flag(5),'Color',[1 1 1], 'Visible', 'on')
%decode
set(ex_flag(6),'Color',[1 0 0], 'Visible', 'on')
drawnow
list_valu = get(popmu(2), 'Value');
if list_valu > 1
if list_valu ~= 8
if isempty(Xcd)
msg = decode(demodulated, Ncd, Mcd, mthd_cod);
elseif isempty(Ycd)
msg = decode(demodulated, Ncd, Mcd, mthd_cod, Xcd);
else
msg = decode(demodulated, Ncd, Mcd, mthd_cod, Xcd, Ycd);
end;
else
% your own error-control code goes here.
%msg = ???(demodulated, Ncd, Mcd, Xcd, Ycd);
end;
else
msg = demodulated;
end;
msg=msg(:);
set(ex_flag(6),'Color',[1 1 1], 'Visible', 'on')
set(bar_color(2), 'XData',[0 (loop-1/7)/Vaa_len (loop-1/7)/Vaa_len 0])
set(ex_flag(7),'Color',[1 0 0], 'Visible', 'on')
bit_err = sum(abs(msg(1:length(indx_bi)) - indx_bi)) / length(indx_bi);
% set(data_h(3), 'UserData', [get(data_h(3), 'UserData'), snratio]);
% set(data_h(3), 'String', mat2str(get(data_h(3), 'UserData'), 6));
set(data_h(4), 'UserData', [get(data_h(4), 'UserData'), [snratio; bit_err]]);
tmp = get(data_h(4), 'UserData');
set(data_h(4),'String', ['snr=',mat2str(tmp(1, :), 4),...
'; bit_err_ratio=',mat2str(tmp(2, :), 4)],...
'Visible', 'on')
set(bar_color(2), 'XData',[0 (loop-0/7)/Vaa_len (loop-0/7)/Vaa_len 0])
set(exec(3), 'Enable','on');
set(ex_flag(7),'Color',[1 1 1], 'Visible', 'on');
drawnow;
end;
set(bar_color(2), 'Xdata', [0 0 0 0]);
set(ex_flag(1:7),'Visible', 'off');
set(entr_valu, 'ForegroundColor', [0 0 0]);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -