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

📄 ofdm.m

📁 i hope use every file i put here to evry one and thank >
💻 M
字号:
tic

global H
global BITS
global TERM

TERM = 0;

% get BITS
s = get(H.edit20,'String');
BITS = st2de(s);
BITS = round(BITS);

% obtain delay values
s = get(H.edit1,'String');
DELAY_1 = st2de(s);
DELAY_1 = round(DELAY_1);

s = get(H.edit3,'String');
DELAY_2 = st2de(s);
DELAY_2 = round(DELAY_2);

% determine which data to use
if get(H.radiobutton1,'Value')
    WHICH = 1;
end

if get(H.radiobutton3,'Value')
    WHICH = 2;
end

if get(H.radiobutton2,'Value')
    WHICH = 3;
end

% start process
if WHICH == 1
    transmitted_data = get(H.edit5,'String');
    len_orig = length(transmitted_data);
    transmitted_code = text_encode(transmitted_data);
end

if WHICH == 2
    s = get(H.popupmenu5,'String');
    i = get(H.popupmenu5,'Value');
    [transmitted_data,fs,nbits] = wavread(char(s(i)));
    len_orig = length(transmitted_data);
    [transmitted_code,num_array] = pcm_encode(transmitted_data);
end

if WHICH == 3
    s = get(H.popupmenu6,'String');
    i = get(H.popupmenu6,'Value');
    transmitted_data = imread(char(s(i)));
    if BITS ~= 8
        [y,columns] = picture_in(transmitted_data);
        len_orig = length(y);
        [transmitted_code,num_array] = pcm_encode(y);
    else
        [transmitted_code,columns] = im_encode(transmitted_data);
    end
end


transmitted_code = buffer(transmitted_code,8);

num = length(transmitted_code) / 8;
index = 1;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%
for k = 1:num
    if TERM == 1
        break
    end
   pause(.00001);
   percent = (k/num) * 100;
   percent = round(percent);
   if percent ~= 100
        set(H.text10,'String',percent);
    end
   
   t = toc;
   set(H.text27,'String',t);
    
   ofdm_signal = ofdm_generation(transmitted_code(index:index + 7));
   
   ofdm_signal = isi(ofdm_signal,DELAY_1,DELAY_2);
   
   received_code(index:index + 7) = code_generation(ofdm_signal);
   
   index = index + 8;
end  
%%%%%%%%%%%%%%%%%%%%%%%%%%%%   
   
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
   %ofdm_signal = ofdm_generation(transmitted_code);
   
   %ofdm_signal = isi(ofdm_signal,delay_1,delay_2);
   
   %received_code = code_generation(ofdm_signal);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%

if TERM ~= 1
    
if WHICH == 1
    received_data = text_decode(received_code);
    error = transmitted_code - received_code;
    error_data = transmitted_data;
    for k = 1:length(received_data)
        if received_data(k) ~= transmitted_data(k)
            error_data(k) = '#';
        else
            error_data(k) = '0';
        end
    end
    
    % clear axes
    axes(handles.axes10)
    axis off
    cla
    set(H.text34,'Visible','off');
    set(H.text35,'Visible','off');
    set(H.text32,'String',error_data);
    set(H.text32,'Visible','on');
    set(H.text33,'Visible','on');
    set(H.text25,'String',received_data);
    set(H.text18,'Visible','off');
    set(H.axes11,'Visible','on');
    axes(H.axes11)
    plot(abs(error),'m');
    set(H.text31,'Visible','on');
    axes(H.axes9)
    axis off
    cla
    set(H.text13,'Visible','on');
    set(H.text25,'Visible','on');
    set(H.pushbutton5,'Visible','off');
end

if WHICH == 2
    received_data = pcm_decode(received_code,num_array);
    received_data = received_data(1:len_orig);
    error = transmitted_code - received_code;
    error_data = transmitted_data' - received_data;
    
    set(H.axes10,'Visible','on');
    axes(H.axes10)
    plot(abs(error_data),'k');
    set(H.text34,'Visible','on');
    set(H.text34,'String','Error in Received Sound')
    
    set(H.text35,'Visible','off');
    set(H.axes11,'Visible','on');
    axes(H.axes11)
    plot(abs(error),'m');
    set(H.text31,'Visible','on');
    set(H.text32,'Visible','off');
    set(H.text33,'Visible','off');
    set(H.axes9,'Visible','on');
    axes(H.axes9)
    plot(received_data,'r');
    wavwrite(received_data,fs,nbits,'wav_out.wav');
    
    set(H.pushbutton5,'Visible','on');
    set(H.text18,'Visible','on');
    set(H.text18,'String','Received Sound');
    set(H.text13,'Visible','off');
    set(H.text25,'Visible','off');
end

if WHICH == 3
    if BITS ~= 8
        data = pcm_decode(received_code,num_array);
        data = data(1:len_orig);
        received_data = picture_out(data,columns);
    else
        received_data = im_decode(received_code,columns);
    end
    
    trans = double(transmitted_data);
    rec = double(received_data);
    trans = floor(trans);
    rec = floor(rec);
    
    global error_data
    
    error_data = trans - rec;
    error_data = floor(error_data);
    
    error_data = uint8(error_data);
    
    error = transmitted_code - received_code;
    set(H.axes10,'Visible','on');
    axes(H.axes10)
    colormap(gray)
    image(error_data)
    axis off
    
    set(H.text32,'Visible','off');
    set(H.text33,'Visible','off');
    set(H.text35,'Visible','on');
    set(H.text35,'String','Error in Received Image');
    set(H.text34,'Visible','on');
    set(H.text34,'String','[Black = 0% error] [White = 100% error]');
    set(H.axes11,'Visible','on');
    axes(H.axes11)
    plot(abs(error),'m');
    set(H.text31,'Visible','on');
    set(H.axes9,'Visible','on');
    axes(H.axes9)
    colormap(gray)
    imagesc(received_data)
    axis off
    set(H.text18,'Visible','on');
    set(H.text18,'String','Received Image');
    set(H.text13,'Visible','off');
    set(H.text25,'Visible','off');
    set(H.pushbutton5,'Visible','off');
end

else
    
TERM = 0;

t = toc;
set(H.text27,'String',t);
set(H.text10,'String',percent);

set(H.pushbutton2,'Enable','on');

set(handles.pushbutton2,'BackgroundColor',[0 .75 0]);

end

%for k = 1:length(transmitted_code),
%   error_code(k) = transmitted_code(k) - received_code(k);
%end

%for k = 1:length(transmitted_data),
%   error_data(k) = transmitted_data(k) - received_data(k);
%end

%figure(1)
%plot(transmitted_data)
%hold
%plot(received_data,'r'), title('transmitted data[blue], received data[red]');

%figure(2)
%plot(error_data), title('error in pcm coding');
%figure(3)
%plot(error_code), title('error in ofdm transmission');

⌨️ 快捷键说明

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