Ir ao conteúdo
  • Comunicados

    • Gabriel Torres

      Seja um moderador do Clube do Hardware!   12-02-2016

      Prezados membros do Clube do Hardware, Está aberto o processo de seleção de novos moderadores para diversos setores ou áreas do Clube do Hardware. Os requisitos são:   Pelo menos 500 posts e um ano de cadastro; Boa frequência de participação; Ser respeitoso, cordial e educado com os demais membros; Ter bom nível de português; Ter razoável conhecimento da área em que pretende atuar; Saber trabalhar em equipe (com os moderadores, coordenadores e administradores).   Os interessados deverão enviar uma mensagem privada para o usuário @Equipe Clube do Hardware com o título "Candidato a moderador". A mensagem deverá conter respostas às perguntas abaixo:   Qual o seu nome completo? Qual sua data de nascimento? Qual sua formação/profissão? Já atuou como moderador em algo outro fórum, se sim, qual? De forma sucinta, explique o porquê de querer ser moderador do fórum e conte-nos um pouco sobre você.   OBS: Não se trata de função remunerada. Todos que fazem parte do staff são voluntários.
    • DiF

      Poste seus códigos corretamente!   21-05-2016

      Prezados membros do Fórum do Clube do Hardware, O Fórum oferece um recurso chamado CODE, onde o ícone no painel do editor é  <>     O uso deste recurso é  imprescindível para uma melhor leitura, manter a organização, diferenciar de texto comum e principalmente evitar que os compiladores e IDEs acusem erro ao colar um código copiado daqui. Portanto convido-lhes para ler as instruções de como usar este recurso CODE neste tópico:  
Entre para seguir isso  
Gustavo Ladeira Kuerques

Matlab Modulação e demodulação MATLAB am

Recommended Posts

Boa noite

Estou com um problema em um código do matlab para modular e demodular um sinal sen ou cos, AM, o sinal não sai demodulado.

Segue o código em matlab : 

function varargout = trabalho_02(varargin)
% TRABALHO_02 MATLAB code for trabalho_02.fig
%      TRABALHO_02, by itself, creates a new TRABALHO_02 or raises the existing
%      singleton*.
%
%      H = TRABALHO_02 returns the handle to a new TRABALHO_02 or the handle to
%      the existing singleton*.
%
%      TRABALHO_02('CALLBACK',hObject,eventData,handles,...) calls the local
%      function named CALLBACK in TRABALHO_02.M with the given input arguments.
%
%      TRABALHO_02('Property','Value',...) creates a new TRABALHO_02 or raises the
%      existing singleton*.  Starting from the left, property value pairs are
%      applied to the GUI before trabalho_02_OpeningFcn gets called.  An
%      unrecognized property name or invalid value makes property application
%      stop.  All inputs are passed to trabalho_02_OpeningFcn via varargin.
%
%      *See GUI Options on GUIDE's Tools menu.  Choose "GUI allows only one
%      instance to run (singleton)".
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help trabalho_02
% Last Modified by GUIDE v2.5 07-Nov-2017 20:29:49
% Begin initialization code - DO NOT EDIT
gui_Singleton = 1;
gui_State = struct('gui_Name',       mfilename, ...
                   'gui_Singleton',  gui_Singleton, ...
                   'gui_OpeningFcn', @trabalho_02_OpeningFcn, ...
                   'gui_OutputFcn',  @trabalho_02_OutputFcn, ...
                   'gui_LayoutFcn',  [] , ...
                   'gui_Callback',   []);
if nargin && ischar(varargin{1})
    gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
    [varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
    gui_mainfcn(gui_State, varargin{:});
end
% End initialization code - DO NOT EDIT

% --- Executes just before trabalho_02 is made visible.
function trabalho_02_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% varargin   command line arguments to trabalho_02 (see VARARGIN)
% Choose default command line output for trabalho_02
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes trabalho_02 wait for user response (see UIRESUME)
% uiwait(handles.figure1);

% --- Outputs from this function are returned to the command line.
function varargout = trabalho_02_OutputFcn(hObject, eventdata, handles) 
% varargout  cell array for returning output args (see VARARGOUT);
% hObject    handle to figure
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;

% --- Executes on slider movement.
function ruido_select_Callback(hObject, eventdata, handles)
% hObject    handle to ruido_select (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'Value') returns position of slider
%        get(hObject,'Min') and get(hObject,'Max') to determine range of slider

% --- Executes during object creation, after setting all properties.
function ruido_select_CreateFcn(hObject, eventdata, handles)
% hObject    handle to ruido_select (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
% Hint: slider controls usually have a light gray background.
if isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor',[.9 .9 .9]);
end

% --- Executes on button press in enter_select.
function enter_select_Callback(hObject, eventdata, handles)
% hObject    handle to enter_select (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
signal = get(handles.signal_select,'SelectedObject');
signal_tag = get(signal,'Tag');
modulation = get(handles.modulation_select,'SelectedObject');
modulation_tag = get(modulation,'Tag');
frequency_num = get(handles.frequency,'String');
global frq_int
frq_int = str2num(frequency_num);
slider = get(handles.ruido_select,'value')*1000;
%slider = 0;
global Fs
Fs=44100;
global T
T=1:1/Fs:10;
global freq_port
freq_port = 6;
global portadora
portadora=sin(2*pi*freq_port*T);
sig_data = get(signal,'UserData');
mod_data = get(modulation,'UserData');
recObj = audiorecorder(44100,8,1);
% Record your voice for 5 seconds.
disp('Start speaking.')
recordblocking(recObj, 3);
disp('End of Recording.');
% Play back the recording.
%recObj.play;
global myRecording
% Store data in double-precision array.
myRecording = getaudiodata(recObj);

%audio = get(handles.recObj)
%audio = getaudiodata(recObj)
if (sig_data == 1 && mod_data == 10) 
    {
       
       
    %thd(sin(2*pi*frq_int*T))
    
    set(handles.thd,'String',thd(sin(2*pi*frq_int*T)));
       plot(handles.axes1,T,sin(2*pi*frq_int*T));
       plot(handles.axes2,T,(sin(2*pi*frq_int*T).*portadora));
       plot(handles.axes3,T,(awgn((sin(2*pi*frq_int*T).*portadora),slider)));
       
       
       plot(handles.axes4,T, ((awgn((sin(2*pi*frq_int*T).*portadora),slider)))./portadora);
       
       plot(handles.axes5,T,abs(fftshift(fft(sin(2*pi*frq_int*T)))));
       plot(handles.axes6,T,abs(fftshift(fft((sin(2*pi*frq_int*T).*portadora)))));
       plot(handles.axes7,T,abs(fftshift(fft((awgn((sin(2*pi*frq_int*T).*portadora),slider))))));
       plot(handles.axes8,T,abs(fftshift(fft(((awgn((sin(2*pi*frq_int*T).*portadora),slider)))./portadora))));
      
       
       
    }
elseif (sig_data == 2 && mod_data == 10) 
    {
set(handles.thd,'String',thd(cos(2*pi*frq_int*T)));
       plot(handles.axes1,T,cos(2*pi*frq_int*T));
       plot(handles.axes2,T,(cos(2*pi*frq_int*T).*portadora));
       plot(handles.axes3,T,(awgn((cos(2*pi*frq_int*T).*portadora),slider)));
       plot(handles.axes4,T,((awgn((cos(2*pi*frq_int*T).*portadora),slider)))./portadora);
       
       plot(handles.axes5,T,abs(fftshift(fft(cos(2*pi*frq_int*T)))));
       plot(handles.axes6,T,abs(fftshift(fft((cos(2*pi*frq_int*T).*portadora)))));
       plot(handles.axes7,T,abs(fftshift(fft((awgn((cos(2*pi*frq_int*T).*portadora),slider))))));
       plot(handles.axes8,T,abs(fftshift(fft(((awgn((cos(2*pi*frq_int*T).*portadora),slider)))./portadora))));
 
       
       
    }
elseif (sig_data == 3 && mod_data == 10) 
    {
        set(handles.thd,'String',thd(myRecording));
       plot(handles.axes1,myRecording);
       
       plot(handles.axes5,abs(fftshift(fft(myRecording))));
       
       plot(handles.axes2,(myRecording.*portadora));
       plot(handles.axes3,(awgn((myRecording.*portadora),slider)));
       plot(handles.axes4,((awgn((myRecording.*portadora),slider)))./portadora);
       
       plot(handles.axes5,abs(fftshift(fft(myRecording))));
       plot(handles.axes6,abs(fftshift(fft((myRecording.*portadora)))));
       plot(handles.axes7,abs(fftshift(fft((awgn((myRecording.*portadora),slider))))));
       plot(handles.axes8,abs(fftshift(fft(((awgn((myRecording.*portadora),slider)))./portadora))));
      
    }
elseif (sig_data == 1 && mod_data == 20) 
    {
set(handles.thd,'String',thd(sin(2*pi*frq_int*T)));
       plot(handles.axes1,T,sin(2*pi*frq_int*T));
       plot(handles.axes2,T,(fmmod(sin(2*pi*frq_int*T),freq_port,Fs,10)));
       plot(handles.axes3,T,(awgn((fmmod(sin(2*pi*frq_int*T),freq_port,Fs,10)),slider)));
       plot(handles.axes4,T,(fmdemod(awgn((fmmod(sin(2*pi*frq_int*T),freq_port,Fs,10)),slider),freq_port,Fs,10)));
        
       plot(handles.axes5,T,abs(fftshift(fft(sin(2*pi*frq_int*T)))));
       plot(handles.axes6,T,abs(fftshift(fft((fmmod(sin(2*pi*frq_int*T),freq_port,Fs,10))))));
       plot(handles.axes7,T,abs(fftshift(fft((awgn((fmmod(sin(2*pi*frq_int*T),freq_port,Fs,10)),slider))))));
       plot(handles.axes8,T,abs(fftshift(fft((fmdemod(awgn((fmmod(sin(2*pi*frq_int*T),freq_port,Fs,10)),slider),freq_port,Fs,10))))));
        
    }
elseif (sig_data == 2 && mod_data == 20) 
    {
set(handles.thd,'String',thd(cos(2*pi*frq_int*T)));
       plot(handles.axes1,T,cos(2*pi*frq_int*T));
       plot(handles.axes2,T,(fmmod(cos(2*pi*frq_int*T),freq_port,Fs,10)));
       plot(handles.axes3,T,(awgn((fmmod(cos(2*pi*frq_int*T),freq_port,Fs,10)),slider)));
       plot(handles.axes4,T,(fmdemod(awgn((fmmod(cos(2*pi*frq_int*T),freq_port,Fs,10)),slider),freq_port,Fs,10)));
%        
       plot(handles.axes5,T,abs(fftshift(fft(cos(2*pi*frq_int*T)))));
       plot(handles.axes6,T,abs(fftshift(fft((fmmod(cos(2*pi*frq_int*T),freq_port,Fs,10))))));
       plot(handles.axes7,T,abs(fftshift(fft((awgn((fmmod(cos(2*pi*frq_int*T),freq_port,Fs,10)),slider))))));
       plot(handles.axes8,T,abs(fftshift(fft((fmdemod(awgn((fmmod(cos(2*pi*frq_int*T),freq_port,Fs,10)),slider),freq_port,Fs,10))))));
%      
    }
elseif (sig_data == 3 && mod_data == 20) 
    {
set(handles.thd,'String',thd(myRecording));
       plot(handles.axes1,myRecording);
       plot(handles.axes2,(fmmod(myRecording,freq_port,Fs,10)));
       plot(handles.axes3,(awgn((fmmod(myRecording,freq_port,Fs,10)),slider)));
       plot(handles.axes4,(fmdemod(awgn((fmmod(myRecording,freq_port,Fs,10)),slider),freq_port,Fs,10)));
        
       plot(handles.axes5,abs(fftshift(fft(myRecording))));
       plot(handles.axes6,abs(fftshift(fft((fmmod(myRecording,freq_port,Fs,10))))));
       plot(handles.axes7,abs(fftshift(fft((awgn((fmmod(myRecording,freq_port,Fs,10)),slider))))));
       plot(handles.axes8,abs(fftshift(fft((fmdemod(awgn((fmmod(myRecording,freq_port,Fs,10)),slider),freq_port,Fs,10))))));
        
    }
end
clc

function frequency_Callback(hObject, eventdata, handles)
% hObject    handle to frequency (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of frequency as text
%        str2double(get(hObject,'String')) returns contents of frequency as a double

% --- Executes during object creation, after setting all properties.
function frequency_CreateFcn(hObject, eventdata, handles)
% hObject    handle to frequency (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
%       See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
    set(hObject,'BackgroundColor','white');
end
% --- Executes during object creation, after setting all properties.
function axes1_CreateFcn(hObject, eventdata, handles)
% hObject    handle to axes1 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% % handles    empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate axes1

% --- Executes during object creation, after setting all properties.
function axes2_CreateFcn(hObject, eventdata, handles)
% hObject    handle to axes2 (see GCBO)
% eventdata  reserved - to be defined in a future version of MATLAB
% handles    empty - handles not created until after all CreateFcns called
% Hint: place code in OpeningFcn to populate axes2

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


 

Editado por Mr. Paglia
Inserindo o code

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×