Você está na página 1de 95

DEPARTAMENTO DE ENGENHARIAS E TECNOLOGIAS

CURSO DE ENGENHARIA ELECTROTECNICA

LABORATÓRIO DE PRINCIPIOS DE COMUNICAÇÕES


SUMÁRIO

1. LAB#1. “INTRODUÇÃO AO MATLAB” .............................................................................. 5


1.1 Objectivos:....................................................................................................... 5
1.2 Fundamentação teórica ................................................................................. 5
1.2.1 Por que MATLAB? ............................................................................................... 6
1.3 Material utilizado:............................................................................................... 8
1.4 Procedimento Experimental ................................................................................ 8
1.4.1 Actividade (A1) – MATLAB Basico ........................................................................ 8
1.4.1.1 Ambiente MATLAB............................................................................................... 8
1.4.1.2 Área de Trabalho do MATLAB (Workspace) ........................................................... 8
1.4.1.3 Janela de comando (Command Window)............................................................... 9
1.4.1.4 Janela de histórico de comando (Command History) .............................................. 9
1.4.1.5 Janela Navegador de Diretórios (Current Folder).................................................... 9
1.4.1.6 Alterando o Navegador de Diretórios .................................................................. 10
1.4.2 Actividade (A2) – Editor/Debugger MATLAB ...................................................... 10
1.4.3 Actividade (A3) – Como criar um arquivo MATLAB ............................................. 11
1.4.3.1 Usando o Editor/Debugger MATLAB ................................................................... 12
1.4.3.2 Usando a janela de comando MATLAB................................................................ 12
1.4.4 Actividade (A4) – Como obter ajuda (Help) ........................................................ 13
1.4.5 Actividade (A5) – Matrizes, Vectores e Escalares ................................................ 14
1.4.5.1 Vectores............................................................................................................ 18
1.4.5.2 Matrizes............................................................................................................ 24
1.4.5.3 Gráficos no Matlab ............................................................................................ 34
1.4.6 Geração de outros gráficos basiscos .................................................................. 38
1.4.6.1 Geraçao de de sinal de várias rampas (fallowing) ................................................ 38
1.4.6.2 Adição de Sinal .................................................................................................. 39
1.4.6.3 Multiplicação de sinal ........................................................................................ 40

2. LAB#2. “ANÁLISE DE SINAIS -M ATALAB” ................................................................... 42


2.1 Objectivos:..................................................................................................... 42
2.2 Fundamentação teórica ............................................................................... 42
2.3 Material utilizado:.......................................................................................... 43
2.4 Procedimento Experimental ........................................................................ 43
2.4.1 Actividade (A1) – Criação e armazenamento de sinais em Matlab......... 43
2.4.2 Actividade (A2) – Sinais de tempo contínuos e tempo discreto............. 44
2.4.2.1 Sinal contínuo ................................................................................................. 44
2.4.2.2 Sinal discreto................................................................................................... 45
2.4.2.3 Sinais amostrados .......................................................................................... 47
(i.) Amostragem: ........................................................................................................ 47
(ii.) Aliasing:................................................................................................................. 48
2.4.3 Actividade (A3) – Sinais pares e sinais ímpares....................................... 49
2.4.3.1 Gerar componentes pres e ímpares............................................................... 49
2.4.3.2 Figuras das Simetrias Par e Ímpar ................................................................. 53
2.4.3.3 Programa para componente par e ímpar ....................................................... 54
2.4.3.4 Decomposição de sinal complexa .................................................................. 55
2.4.4 Actividade (A4) – Sinais Periódicos e não Periódicos............................. 57
2.4.4.1 Sinais Periódicas ............................................................................................ 57
2.4.4.2 Gerar Figuras das funções quadradas ........................................................... 58
2.4.4.3 Gerar Figuras da onda quadrangular ............................................................. 59
2.4.4.4 Gerar figura da função x = (cos(5*t)).^2; ........................................................ 59
2.4.4.5 Gerar figuras das funções (x1=cos(3.5*t); x2=sin(2*t); x3= 2*cos(7*t/6);
Soma=x1+x2+x3) .............................................................................................................. 60
2.4.4.6 Construir a função periódica com Operações Básicas (1) ............................ 61
2.4.4.7 Construir a função periódica com Operações Básicas (2) ............................ 62
2.4.4.8 Sinal aperiódica............................................................................................... 63
2.4.4.9 Sinais de Tempo Discreto e Contínuo............................................................ 63
2.4.4.10 Sinais Periódicos e Aperiódicos ..................................................................... 64
2.4.4.11 Construir a função periódica com a introdução de números de harmónicas
(1) 65
2.4.4.12 Construir a função periódica com a introdução de números de harmónicas
(2) 66
2.4.5 Actividade (A5) – Sinais de energia e sinais de potência........................ 67
2.4.5.1 Energia de um sinal ........................................................................................ 67
2.4.5.2 Potência de um sinal....................................................................................... 69
2.4.6 Actividade (A6) – Transformações lineares da variável independente.. 70
2.4.6.1 Translação no Tempo (1) ............................................................................... 70
2.4.6.2 Translação no Tempo (2) ............................................................................... 70
2.4.6.3 Inversão........................................................................................................... 71
2.4.6.4 Compressão e Expansão ............................................................................... 72
2.4.7 Actividade (A7) – Sinais contínuos e sinais Discretos básicos.............. 78
2.4.7.1 Sinal Impulso Unitário (Delta de Dirac) .......................................................... 78
2.4.7.2 Sinais de Rampa............................................................................................. 81
2.4.7.3 Sinais senoidais .............................................................................................. 82
2.4.7.4 Geração de onda senoidal.............................................................................. 83
2.4.7.5 Geração de onda Sinc .................................................................................... 84
2.4.7.6 Sinais de ondas Quadrados e Triangulares ................................................... 85
2.4.7.7 Sinais Complexos: .......................................................................................... 89
2.4.8 Actividade (A8) – Sinais Exponencias Reais Contínuos Crescente e
Decrescente...................................................................................................................... 89
2.4.8.1 Sinais Exponencias Reais Contínuos Crescente........................................... 89
2.4.8.2 Sinais Exponencias Reais Contínuos Decrescente....................................... 90
2.4.8.3 Sinais Exponencias Reais contínuos Crescente e Decrescente ................... 90
2.4.8.4 Sinal Exponencial Complexo Contínuos ........................................................ 91
2.4.8.5 Sinais Exponencias Reais Discretos Crescente e Decrescente ................... 94
P ág i n a |5

1. LAB#1. “INTRODUÇÃO AO MATLAB”

1.1 Objectivos:

 Dominar os aspectos básicos do ambiente Matlab.


 Criar e armazenar ficheiros em Matlab
 Examinar o menu de ajuda “help” para resolver dúvidas sobre a linguagem.
 Saber definir um vector e uma matriz no Matlab
 Concatenar vectores.no Matlab
 Utilizar a função zeros e a função ones.
 Distinguir e utilizar conscientemente operadores matriciais e operadores
elemento a elemento.
 Empregar operadores relacionais e lógicos em tomadas de decisão e
construção de vectores.
 Utilizar convenientemente a função plot, subplot, stem, zeros e a função ones
e os comandos if e for.
 Representar quantidades complexas.
 Dominar os conceitos básicos do cálculo simbólico .

1.2 Fundamentação teórica

MATLAB é um pacote de software matemático, que é usado extensivamente na


academia e na indústria e representa um laboratório (Matrix Laboratory).

Tornou-se a ferramenta mais fundamental e indispensável para trabalhar nas


empresas de tecnologia mais inovadoras do mundo, laboratórios de pesquisa
governamentais, situações financeiras e em mais de 3.500 universidades. Foi
desenvolvido por Cleve Moler, um professor de matemática e está disponível como
um produto, para compra, na mathworks Inc.,EUA

Nos últimos 20 anos (2 décadas), o MATLAB evoluiu para um pacote poderoso e


versátil, útil para uma ampla variedade de acadêmicos, pesquisa e aplicações
industriais, etc.
P ág i n a |6

1.2.1 Por que MATLAB?

i. Como um sistema baseado em matriz, é uma óptima ferramenta para simulação


e analise de dados;
ii. É uma linguagem de programação simples, poderosa e fácil de aprender e dotada
de uma ampla ajuda online;
iii. Ao contrário de outras linguagens de programação de alto nível como FORTRAN,
C etc., não requer nenhuma declaração de variável e dimensão declarações no
início;
iv. Possui milhares de funções integradas para fins científicos e técnicos de
computação e, portanto, os programas MATLAB, foram escritos para resolver
problemas complexos, leva uma fracção de tempo e parece muito pequeno, em
geral, quando comparado aos códigos escritos usando outros linguagens de alto
nível;
v. Fornece o código mais optimizado, que é extremamente rápido, especialmente
para operações baseadas em matriz;
vi. Permite que os usuários escrevam suas próprias funções para facilitar
habituação;
vii. É uma linguagem interrompida e, portanto, pode-se executar os comandos
digitando-os no prompt de comando um por um e pode-se ver os resultados
imediatamente;
viii. Uma vez que o MATLAB usa notação de matriz, o mesmo substitui vários loops
'for' , que geralmente são encontrados no tipo C de códigos;
ix. MATLAB é uma ferramenta indispensável de interface gráfica do usuário (GUI),
especialmente para estudantes de Electrotecnia, pois os estudantes podem usá -
lo para compreensão de conceitos em várias prescrições básicas e avançadas de
assuntos como:
 Matemática
 Sinais e sistemas
 Teoria da probabilidade e processos estocásticos
 Sistemas de controlo
 Comunicações analógicas
 Comunicações sem fio
 Redes Neurais Artificiais etc.
P ág i n a |7

O objectivo principal do MATLAB é fornecer ao usuário, técnicas de resolução de


problemas, sem necessidade de desenvolver rotinas em linguagens de programação
convencionais.

O MATLAB possui um conjunto de bibliotecas que permitem resolver classes


particulares de problemas. Associado ao MATLAB encontra-se a ferramenta de
simulação denominada SIMULINK, que tem como principal função a simulação de
sistemas dinâmicos ou através de linguagem script (linguagem estruturada similar ao
C).

Os modelos são criados recorrendo-se a uma interface gráfica, que contém blocos
que representam e modelam operações específicas.

Ao contrário de linguagens de programação clássicas no ambiente MATLAB o usuário


não se preocupa com:

 Declaração de variáveis;
 Alocação de memória;
 Utilização de ponteiros;
 Outras tarefas de rotinas.
O Matlab (Matrix Laboratory) pode ser definido como um ambiente de computação
numérica baseado em matrizes. Dentre as suas principais características, destacam-
se:

 Gráficos e visualização de dados;


 Linguagem de programação de alto nível;
 Toolboxes, são biblioteca que oferecem funcionalidades específicas por
área de aplicação.
Como exemplos de toolboxes, podem-se citar:

 Optimization, Statistics, Financial;


 Fuzzy Logic, Neural Networks, Control System;
 Signal Processing, System Identification;
 Simmecanics;
 Bioinfirmatics.
P ág i n a |8

1.3 Material utilizado:

− Computador pessoal (PC)


− Software MATLAB

1.4 Procedimento Experimental

1.4.1 Actividade (A1) – MATLAB Basico

1.4.1.1 Ambiente MATLAB

Se o MATLAB estiver instalado no computador, pode-se encontrar um Ícone do


MATLAB como um atalho na área de trabalho do sistema baseado em Windows.

Caso contrário, clique no botão 'Iniciar', vá para programas e poderá encontrar o


Aplicativo MATLAB e ícone MATLAB. Clique duas vezes no Ícone do MATLAB para
iniciar o aplicativo.

Uma nova janela, chamada MATLAB desktop aparece, que consiste em vários
pequenas janelas, barras de ferramentas e outros ícones de atalho abertos, dividida
em quatro sub-janelas, diferentes do sistema prontos para se dar inicio a programação
do M.

1.4.1.2 Área de Trabalho do MATLAB (Workspace)

Área de memória de trabalho do Matlab, na qual todas as variáveis são armazenadas.


Quando o MATLAB é lançado pela primeira vez, a área de trabalho MATLAB aparece
com o layout padrão, onde se pode alterar a configuração para atender às suas
necessidades, desmarcando as opções selecionadas e selecionando outras
ferramentas, usando o menu suspenso da área de trabalho na barra de
ferramentas. Todos os itens selecionados, no submenu da área de trabalho,
aparecem a Área de Trabalho do MATLAB.

Como exemplo, digite no Command Window a instrução “ver”. Como resultado, o


usuário recebe as informações acerca das versões do Matlab, do Simulink e de todos
os toolboxes instalados no computador.
P ág i n a |9

1.4.1.3 Janela de comando (Command Window)

Neste ambiente de trabalho (Command Window) é um lugar onde se pode inserir todos
os comandos do MATLAB no "Prompt de Comando" (>>).O sinal de prompt “>>” dessa
janela indica que o sistema está apto a receber comandos

Quando o comando é digitado no prompt de comando e a tecla 'Enter' pressionada


ou clicada, MATLAB executa esses comandos e exibe o resultado de cada operação
realizada. Observe que a janela de comando é separada usando o botão 'undock'.

1.4.1.4 Janela de histórico de comando (Command History)

Nesta janela (Command History), se podem ver todos históricos das instruções já
executadas. Claro, os resultados das operações não são exibidos aqui. A partir daqui,
se pode selecionar qualquer comando clicando apenas uma vez no comando. Uma
vez selecionado, pode-se excluí-lo usando a tecla 'del' ou copiá-lo usando 'Edit, Copy
(Ctrl C)' e colá-lo na janela de comando do MATLAB ou em um documento separado
usando comandos 'Edit, Paste (Ctrl V)' como são feitos em qualquer documento de
processamento de texto. De exterma importância é, quando é clicado duas vezes no
comando do histórico de comandos, são executados na janela de comando. Este
recurso é extremamente útil quando se deseja executar um comando repetidamente,
já que não se necessita digitá-lo novamente no prompt de comando.

1.4.1.5 Janela Navegador de Diretórios (Current Folder)

Navegador de Diretórios é os ‘olhos do MATLAB’. Todo tipo de arquivo que o usuário


deseja abrir no MATLAB deve estar indicado nesse campo. Se desejarmos abrir um
M-file, por exemplo, que está numa determinada pasta, esta pasta deve estar
direcionada no Current Directory para aí sim o software executar o arquivo desejado

Esta janela exibe a lista de todos os arquivos e pastas sob o diretório corrente, que
passa a ser o 'trabalho' (pastas sob o C) subdiretório, por padrão, no diretório raiz do
MATLAB. Assim diretório 'MATLAB' estará normalmente no disco rígido C: \ em seu
sistema, onde todos os pacotes de software de aplicativo são armazenados, nunca
deve usar o diretório padrão para salvar seus arquivos MATLAB, perderá todos os
seus arquivos ao formatá-lo. Supondo que o disco rígido é particionado em C: \, D: \,
P á g i n a | 10

E: \, é sempre seguro usar drives E: \ ou D: \ para salvar seus novos arquivos em uma
nova pasta criada especialmente para Arquivos MATLAB.

1.4.1.6 Alterando o Navegador de Diretórios

Se pode criar um novo diretório, para fazer isso, digite o comando 'path tool'
ferramenta de caminho no prompt de comando. Em seguida, uma nova janela
chamada 'set path' para definir o caminho. A janela abre mostrando todos os

diretórios e sub-diretórios que são visíveis para o MATLAB para criar uma nova pasta
e torná-lo visível para o MATLAB, seguindo as etapas a seguir / etapas abaixo.

 Clique em adicionar pasta ‘Add folder'. Uma nova janela chamada


'Procurar pasta abre.
 Clique nos botões de seta para cima e para baixo até que a unidade 'E'
apareça selecione-o clicando uma vez nele.
 Clique em Criar nova pasta 'Make new folder' e digite nome da pasta
‘folder name' na pasta janela e diga OK.
 A janela de definição do caminho agora deve ser semelhante àquela que
observa o novo diretório é adicionado ao caminho de pesquisa do
MATLAB.
 Clique em salvar 'save' e depois em fechar' close' a janela do caminho
definido desaparece e o novo caminho é salvo permanentemente, até
que você o exclua usando o botão 'remover''remove'.
 Digite cd E: \ slab no prompt de comando e pressione 'Enter', observe
que o diretório actual foi alterado para o novo caminho. Agora se pode
começar a criar novos arquivos.
Cada vez que se iniciar o 'MATLAB', certifique-se primeiro de que o diretório é o seu,
o que pode ser feito digitando o comando no prompt de comando.

1.4.2 Actividade (A2) – Editor/Debugger MATLAB

O MATLAB fornece ferramentas poderosas para criar, editar e depuração de


arquivos. A depuração é um processo em que os erros de sintaxe em um o código
são removidos. O Editor e Depurador MATLAB permitem aos usuários
P á g i n a | 11

 Criar um novo arquivo MATLAB, denominado arquivo '.m', no qual o


Comandos, comentários e dados do MATLAB são inseridos, usando
cores diferentes, para fácil identificação de strings e correspondência de
instruções if-else, etc. para destacar a sintaxe.
 Editar tudo o que está escrito no arquivo usando os comandos usuais,
como como selecionar, cortar, copiar, colar, localizar, substituir etc.
 Importar dados, como texto ASCII ou uma matriz enorme, de um externo
ambiente no arquivo.
 Salvar o arquivo em um director escolhido.
 Depurar os comandos do MATLAB executando o programa ou linha por
linha em um modo de passo ou executar uma parte do programa por
definir pontos de interrupção.
 Abrir um arquivo. m existente para uma possível modificação.

Alguns menus são bastante utilizados:

 File: manipulação de arquivos;


 File/Set Path: configura a lista de diretórios de busca (equivalente ao
comando “pathtool”);
 File/Preferences: configura parâmetros do ambiente Matlab
(equivalente ao comando “preferences”);
 Edit: recursos de edição;
 View: configuração de visualização da tela do Matlab;
 Web: aciona web browser;
 Window: fecha janelas de figuras (gráficos);
 Help: aciona textos de ajuda.

1.4.3 Actividade (A3) – Como criar um arquivo MATLAB

Para a criação de um arquivo tem-se algumas maneiras de criar um arquivo MATLAB


.m entre eles, usando o MATLAB Editor /Debugger e usando a janela de comando
MATLAB que são :
P á g i n a | 12

1.4.3.1 Usando o Editor/Debugger MATLAB

Depois de iniciar o MATLAB e alterar o Navegador de Diretórios, se pode utilizar a


barra de ferramentas e selecionar o arquivo New M-file para abrir o MATLAB
editor/depurador. Entre no programa que se quiser executar e salvar o arquivo com
comandos  Save digitando o nome do arquivo desejado ou qualquer que seja o

nome do arquivo que se pretende dar. Garanta que o arquivo é salvo no diretório
criado, então no editor MATLAB janela aparece o diretório.

Agora, digite o nome do arquivo no prompt de comando. O MATLAB executa o arquivo


e exibe o resultado. MATLAB, neste caso, actua como um "COMPILADOR" e o nome
do arquivo agora se torna uma função e pode ser chamado por outro arquivo. m
incluindo esta palavra como um dos comandos em um programa MATLAB, com
pequenas modificações.

1.4.3.2 Usando a janela de comando MATLAB

A melhor maneira para um iniciante é usar a janela de comando para entrar cada
comando do MATLAB no prompt de comando com um retorno ao final, observe com
atenção a diferença que o resultado de cada declaração agora é exibida
imediatamente na tela, neste caso, o MATLAB actua como um 'Intérprete'.

Agora digite todos os comandos que deseja executar e selecione toda a parte editada
e, em seguida, 'clique com o botão direito' na parte selecionada e escolha criar arquivo
M', que irá abrir o arquivo no MATLAB janela do editor salve o arquivo com comandos
 Save de arquivo digitando o nome do arquivo que se deseja fornecer.

Algumas observações sobre o código MATLAB que são executados, vale a pena
mencionar-los aqui. Espaços em branco ao redor de operadores, como -,: and () são
opcionais, mas melhoram a legibilidade em relação ao caso, MATLAB diferencia
maiúsculas de minúsculas e, portanto, requer uma correspondência exacta para a
nomes de variável, por exemplo, se tem uma variável 'a', não pode-se referenciar a
esta variável como 'A'. Qualquer declaração que comece com um símbolo % é tratada
como um comentário e ignorado durante a execução. Os comentários são
extremamente importante, não apenas para outros leitores entenderem seu programa,
P á g i n a | 13

mas também para que se compreenda os estágios posteriores, a saída não figurar
com realce de sintaxe, excepto para erros.

Normalmente, todas as instruções do MATLAB terminam com um ponto e vírgula (;)


que serve dois propósitos: se pode inserir qualquer número de MATLAB declarações
na mesma linha, se cada declaração terminar com um ponto e vírgula, actua como um
separador, o ponto-e-vírgula também é usado para suprimir a imediata exibição da
saída na tela, quando uma instrução é executada, por exemplo, quando o MATLAB é
usado no modo intérprete, muitas vezes, será incomodativo ver uma grande
quantidade de dados saindo da tela.

1.4.4 Actividade (A4) – Como obter ajuda (Help)

Existem várias maneiras pelas quais podemos obter ajuda, caso se estejam presos
ao problema.

 Pressione a tecla F1 no teclado ou clique no símbolo? na barra de ferramentas


para abrir um MATLAB separado vem com um extenso conjunto de
documentos, disponíveis na categoria 'Conjunto de documentação' clicando em
um link apropriado tais como 'getting started', 'user guides', se pode obter todas
as informações necessárias.
 Clique no botão 'pesquisar''search' na janela 'Help Navigator' e procure as
informações desejadas digitando ou no teclado.
 Clique no botão ‘Index' no 'Help Navigator' e digite uma palavra no 'search
index' para barra retangular.
 Clique no botão demos na janela 'Help Navigator', onde há um extenso conjunto
de demos sobre vários tópicos, selecione uma demo e clique em 'Run this
demo'.
 Digite 'Ajuda''Help ' no prompt de comando na janela de comando. Uma a
listagem de todos os tópicos será apresentado na tela, clique em qualquer um
desses links.
 Visto que o MATLAB é um software muito popular usado em todo o mundo.
Vários usuários estabeleceram alguns 'grupos de usuários' para troca de ideia
entre os usuários. O mais proeminente deles é aquele que é mantido pelas
P á g i n a | 14

obras matemáticas. Inc. em http://www.mathworks.com/matlabcentral/.


Existem vários outro que se pode pesquisar na internet.

1.4.5 Actividade (A5) – Matrizes, Vectores e Escalares

O Matlab, como já foi dito, é orientado para trabalhar com matrizes. Uma matriz é
notada como ' A(i,j) ' ou 'a(i,j)', em que 'A' e 'a' são matrizes diferentes. O índice (i)
se refere às linhas e o índice (j) às colunas. O tamanho de uma matriz é especificado
pelo número de linhas e colunas. Uma matriz que possui somente uma linha ou
somente uma coluna é chamada de vector. Por outro lado, se uma matriz possuir
somente uma linha e uma coluna, ela é um escalar.

 MATLAB é um laboratório de matriz. Essencialmente, funciona apenas com um


tipo de objecto, ou seja, uma matriz.
 Um escalar, que é um único número, é um | x | matriz.

 MATLAB é extremamente rápido, especialmente para operações matriciais.

(i.) Variáveis

Uma variável é um nome atribuído a um valor armazenado na memória do


computador. Aqui, os nomes das variáveis devem começar com uma letra e pode ser
seguido por qualquer combinação de letras, dígitos e sublinhados. Nomes de função
predefinidos não podem ser usados como nome de variável em nosso programa. O
MATLAB armazena variáveis em uma parte da memória chamada de área de
trabalho. Se uma variável já existe, o valor anterior é sobrescrito de modo a armazenar
o valor recente.

Variáveis criadas no prompt de comando do MATLAB em um M-arquivo existe até que


nós os limpemos usando o comando clear.

Exemplo

>> x= 3 + 4
Isso cria uma variável 'x' e atribui um valor 7 a ela. Se digitarmos x, sem ponto-e-
vírgula, o seguinte exibeÇ

x =
7
As declarações do MATLAB geralmente têm o formato.
P á g i n a | 15

Variável = expressão

As variáveis diferenciam maiúsculas de minúsculas, ou seja, 'A' e 'a' não são as


mesmas variáveis.

(i.) Expressões e Declarações

Uma expressão pode consistir em números, nomes de variáveis e alguns funções


predefinidas, como sen, cos, log, etc., operadores aritméticos, como como +, -, / etc.
operadores relacionais como <,> etc. e alguns caracteres como espaço, c, ponto e
vírgula, etc.

A avaliação da expressão produz uma matriz.

Exemplo

>> 34/7
ans =
4.8571
>> log (12)
ans =

2.4849

Se uma variável não é atribuída a uma expressão, MATLAB por padrão cria uma
variável com o nome 'ans' que representa a resposta e o resultado de expressão é
atribuída a ele.

Tabela :Os operadores aritméticos e relacionais da MATLAB


Operador Operador Operação
Operação
aritmética relacional
+ Adição == Igual
- Subtração ~= Não igual
Multiplicação de Menor que
* <
Matrix
Multiplicação Array Menos que ou
.* <=
igual a
/ Divisão > Maior que
Potência de Matrix Maior ou igual
^ >=
para
.^ Potencia Array
' Transpor

Exemplos

>> y = sqrt (17)


P á g i n a | 16

y =

4.1231
>> a = 3 + 4 * j;
b = abs ( a )
b =
5

Aqui, a é uma variável complexa indicada por especial

Funções i e j . Também pode ser declarado como

>> p = 2;
q = 7;
r = complex (p, q)

r =
2.0000 + 7.0000i

Os operadores relacionais realizam comparação elemento a elemento entre duas


variáveis. Eles retornam um valor lógico com o conjunto de resultados para verdadeiro
('1') onde a relação é verdadeira e falsa ('0') onde não é.

Por exemplo, a expressão p>q produzirá uma saída '0', pois p é menor que q,
enquanto p <q produzirá um '1' porque a condição é satisfeito.

>> p = 2;

q = 7
>> p> q
ans =
0
>> p<q
ans =

O MATLAB não exibe o resultado, quando o último caractere é um ponto e vírgula (;),
por exemplo

>> y = sqrt (17);


P á g i n a | 17

Este recurso pode ser usado para ocultar todos os resultados intermediários
indesejados.

Tabela: algumas funções predefinidas do MATLAB


Funções Elementares Funções ee Variável Complexa
Exp Exponenci al Abs Valor absoluto
Log Logaritmo natural Angle Ângulo de fase
Log10 Logaritmo Comum Complex Forma de Número complexo
Sqrt Raiz quadrada Conj Conjugado
nth root nº raiz Real Parte real
Sin Seno Imag Parte imaginária
Cos Cosine i -1

(ii.) Área de trabalho

Para listar as variáveis, incluindo ans, no tipo de espaço de trabalho digite who e
então pressione enter

>> who

Suas variáveis são:

ans p q r y

Para ver o tamanho das variáveis actuais, podemos usar whos, que dá

>> whos

Name Size Bytes Class Attributes


ans 1x1 1 logical

p 1x1 8 double
q 1x1 8 double
r 1x1 16 double complex
y 1x1 8 double

O total geral é de 5 elementos usando 48 bytes

A quantidade de memória livre restante depende da quantidade total disponível no


sistema e varia de computador para computador.

Variáveis desnecessárias podem ser apagadas da memória usando o claro


comando. Quando saímos do MATLAB usando sair ou sair, todos os variáveis são
apagadas automaticamente.
P á g i n a | 18

1.4.5.1 Vectores

(i.) Vector Linha e elementos arbitrários

Um vector linha de elementos arbitrários, como [2 7 0 1 5] pode ser definido por

>> a = [2 7 0 1 5]
a =
2 7 0 1 5

Ele cria um vector 1 x 5 e o atribui às variáveis 'a'. Os elementos devem ser separados
por espaços ou vírgulas como a = [2, 7, 0, 1, 5].

Os elementos individuais de um vector podem ser acessados incluindo seus


subscritos entre parênteses.

Por exemplo, a (3) será 0 e a (2) será atribuído a 7. Subscritos sempre comece com
1 no MATLAB.

>> a (3)
ans =
0

>> a (2)
ans =
7

Podemos expandir o vector adicionando elementos adicionais,

Por exemplo,

>> a (6) = 3
a =
2 7 0 1 5 3

irá adicionar o elemento 6º para a

>> a (8) = 4

a =
2 7 0 1 5 3 0 4

não vai apenas adicionar o elemento 8º , mas também inclui 0 como 7 por defeito
P á g i n a | 19

Uma nova matriz expandida pode ser formada usando concatenação. Por exemplo

>> d = [a c]
d =
2 7 0 1 5 12 15

dará um novo vector c (1 x 2) para previamente definir o vector c ( 1 x 8 ) para criar


um vector d ( 1 x 10).

(ii.) Vector de linha de elementos com espaço igual

Um vector de elementos igualmente espaçados pode ser facilmente criado usando os


dois pontos mais frequentemente usados e muito poderosos (operador:).

>> b = 3: 2: 11
b =
3 5 7 9 11

Cria um vector (1 x 5) e o atribui à variável b.

O número medio define o incremento, i.e. 2.

>> c = 0: 10
c =
0 1 2 3 4 5 6 7 8

irá gerar um vector c de 11 elementos com um espaçamento de unidade padrão entre

>> n = 0.1 : 0.1 : 0.5;

resultará em um vector bruto de 41 elementos, com valor inicial de 0,1 e incremento


de 0,01 e valor final de 0,5.

>> t = 0.5 : -0.1 : 0.2


t =
0.5000 0.4000 0.3000 0.2000

O incremento também pode ser um número negativo.

Uma lista parcial de elementos em um vector pode ser vista usando o subscrito
rotação e o operador de cólon como
P á g i n a | 20

>> t (2: 3)

ans =
0.4000 0.3000

(iii.) Vector de coluna de elementos arbitrários

A seguir estão vários métodos de criação de vetores de coluna

>> a = [1 2 3];
b = a'

Cria um vector coluna 3 x 1, transpondo o vector linha 'a' como

b =

1
2
3

Se os elementos em um vector linha forem separados por ponto-e-vírgula como em

>> c = [1; 4; 6]

c =
1
4
6

um vector de coluna 3x1 é criado, aqui c (2) = 4 e c (3) = 6.

A expansão do vector da coluna também pode ser feita por concatenação

>> d = [b; c]
d =
1

2
3
1
4
6
P á g i n a | 21

Depois que o vector c foi concatenado ao vector b, o vector d resultante é um vector


de coluna 6x1.

(iv.) Vector de coluna de elementos com espaço igual

Um vector de coluna de elementos igualmente espaçados pode ser criado usando o


operador de transposição como

>> t = [0 : 2:10]'
t =
0
2
4

6
8
10

(v.) Operações em vectores

Vamos considerar dois vectores simples

a = [5 2 1 4 3] b = [8 6 7]
Tabela: alguns comandos matlab relacionados a vetores

Funçao Matlab Significado Exemplo


Min Menor elemento Min (a) = 1
Max Maior elemento Max (b) = 8
Length Número total de elementos Length (b) = 3
Sum Soma de todos os elementos Sum (b) = 21
Prod Produto de todos os elementos Prod (a) = 120
Mean Valor médio Mean (a) = 3
Std Desvio padrão Std (a) = 1.5811
Median Valor mediano Median (b) = 7

Os resultados de cada operação especificada em um dos vectores acima são

 Operação short

>> sort (a, 'descend')


ans =
3

2
1
P á g i n a | 22

Se simplesmente digitarmos sort (a), os elementos serão, por defeito, classificados


em Ordem ascendente.

 Operação de Adição

Para adicionar os dois vectores a e b, seus tamanhos devem ser iguais.

>> a + b

? ? ? Erro usando = = > a soma de matrizes

As dimensões da matriz devem concordar

O comprimento do vector (b) pode ser igual ao comprimento do vector (a) pelo
método de concatenação

Exemplo:

>> c = [0 0];
b = [8 6 7]
b =

8 6 7
>> bnovo = [b c]
bnovo =
8 6 7 0 0
>> a = [5 2 1 4 3]

a =
5 2 1 4 3
>> d = a + bnovo
d =
13 8 8 4 3

 Operação de potencia do array

Todos os elementos de um vector podem ser elevados a uma potência usando o


operador de MATLAB de potência array (. ^).
P á g i n a | 23

Exemplo:

>> a = 1: 7
a =
1 2 3 4 5 6 7
>> b= a.^2
b =

1 4 9 16 25 36 49

 Operação de multiplicação de matriz

A multiplicação elemento por elemento de dois vetores pode ser feita usando a
operação de multiplicação de array, vamos multiplicar os dois vectores a e d, no exe
mplo de adição, para obter o seguinte resultado.

>> a = [5 2 1 4 3];
d = [13 8 8 4 3];
a.*d
ans =

65 16 8 16 9

Esta operação é usada com muita frequência e tem três nomes diferentes: produto
interno, produto escalar em produto escalar. Removendo o 'ponto' da expressão
acima resultará em um erro devido à incompatibilidade nas dimensões. Nós pode
fazer a multiplicação transpondo o vector d ou vector a.

>> a*d'
ans =
114
>> a'*d

ans =
65 40 40 20 15
26 16 16 8 6
13 8 8 4 3
52 32 32 16 12
P á g i n a | 24

39 24 24 12 9

1.4.5.2 Matrizes

As operações de matriz são fundamentais para o MATLAB. Podemos entrar matrizes


de várias maneiras.

 Insirir uma lista explícita de elementos


 Carregar matrizes de arquivos de dados externos, usando o comando 'load'.
 Gerir matrizes usando funções integradas.
Os elementos de uma linha devem ser separados por espaços em branco ou vírgulas.

Um ponto e vírgula são usados para indicar o final de cada linha. A lista inteira é
cercado por colchetes [ ].

Uma matriz pode ser inserida digitando uma linha de elementos e lista  1 explícita por
linha.

>> a = [1 2 3; 4 5 6; 7 8 9]
a =

1 2 3
4 5 6
7 8 9

Cria uma matriz 3x3 e a atribui a uma variável a. Elementos individuais podem ser
referidos usando parênteses. Por exemplo, a (2, 3) refere-se ao elemento da 2ª linha
e 3ª coluna e a(3, 2) será 8.

>> a (2, 3)
ans =
6
>> a (3, 2)
ans =

As matrizes também podem ser geradas usando funções internas especiais tabela.
P á g i n a | 25

Tabela : Funções de Matriz do MATLAB

Eye Matriz de identidade


Zeros Matriz de Zeros
Ones Matriz de uns
Diag Matriz com elementos aleatórios
Rand Matriz com elementos aleatórios
Trice Parte triangular superior de uma matriz
Tril Parte triangular inferior de uma matriz
Magic Matriz quadrada mágica
Size Tamanho da matriz
Length Comprimento do vetor
Sum Soma dos elementos
Inv Inverso da matriz
Eig Valor próprio
Rank Classificação da matriz
Det Determinante da matriz
Norm Norma de matriz
Poly Polinômio característico
Trace Traço de matriz
Prod Produto de elementos
Mean Valor médio
Exemplo

Cria uma matriz de identidade 3x3

>> b = eye (3)


b =

1 0 0
0 1 0
0 0 1

Gera uma matriz 4x6 de números aleatórios entre 0 e 1.

>> c = rand (4, 6)

c =
0.8147 0.6324 0.9575 0.9572 0.4218 0.6557
0.9058 0.0975 0.9649 0.4854 0.9157 0.0357
0.1270 0.2785 0.1576 0.8003 0.7922 0.8491
0.9134 0.5469 0.9706 0.1419 0.9595 0.9340

Cria uma matriz 4x3 de elementos que são todos uns.

>> d = ones(4, 3)
P á g i n a | 26

d =
1 1 1
1 1 1
1 1 1

1 1 1

Cria uma matriz 3x6 de elementos que são todos zeros.

>> e = zeros (3, 6)


e =
0 0 0 0 0 0

0 0 0 0 0 0
0 0 0 0 0 0

(vi.) Operações sobre matrizes

Tamanho: O tamanho de uma matriz pode ser conhecido usando o comando de


tamanho [M, N] =size (X), para uma matriz M por N X, retorna o vector linha de dois
elementos D= [M, N].

Contendo o número de linhas e colunas na matriz, por exemplo

>> e = zeros (3, 6);


[M, N] = size (e)

M =
3
N =
6

Gerando mais de uma saída, com a execução de uma única comando, é uma das
características distintivas do MATLAB. Neste caso, produz duas saídas M & N, que
podem ser usadas, por exemplo, em rotações.

(vii.) Soma, Transposição e Diagonal


P á g i n a | 27

Vamos criar uma matriz quadrada mágica 3x3, por exemplo, que tem algumas
propriedades interessantes. O comando magic (N) é gerado como NxN matriz
quadrada que tem todos os inteiros, de 1 a N 2 . . A soma de todos os elementos, ao
longo de cada linha, cada coluna e também ao longo de cada um dos dois diagonais
é igual é conhecido como quadrado mágico.

>> a = magic (3)


a =
8 1 6

3 5 7
4 9 2

O exemplo acima gera uma matriz quadrada 3x3. Tem tudo diferente inteiros de 1 a
9. A soma do comando calcula a soma dos elementos em cada coluna.

ans =
15 15 15

O comando diag extrai a diagonal principal.

>> diag (a)


ans =
8
5
2
>> sum (diag (a))

ans =
15

A soma dos elementos diagonais é 15. Vamos transpor a matriz para que troque linhas
e colunas para recalcular a soma de cada linha de matriz a, que agora é a coluna da
matriz b.

>> b = a'

b =
8 3 4
1 5 9
P á g i n a | 28

6 7 2

>> sum (b)


ans =
15 15 15

MATLAB não tem uma função especial para extrair os elementos anti-diagonal. Mas
fornece uma função muito útil fliplr para transformar a matriz da esquerda para a
direita, que por sua vez converte o anti-diagonal em princípio diagonal. Agora,
podemos calcular sua soma facilmente.

>> c = fliplr (a)

c =
6 1 8
7 5 3
2 9 4
>> diag (c)

ans =
6
5
4

Extraímos a anti-diagonal da matriz original a.

>> sum (diag (c))


ans =
15

A característica única da matriz quadrada mágica é a de seus elementos de cada


linha, cada coluna, princípio diagonal e anti-diagonal é o mesmo..Portanto, é chamada
de matriz quadrada mágica.

(viii.) Determinante e Inverso

O comando det (x) encontra o determinante da matriz quadrada x.

Vamos calcular o determinante da matriz quadrada mágica.


P á g i n a | 29

>> det (a)


ans =
-360

Como o determinante é diferente de zero, a matriz pode ser invertida. agora


calculamos seu inverso, usando o comando inv.

>> inv (a)

ans =
0.1472 -0.1444 0.0639
-0.0611 0.0222 0.1056
-0.0194 0.1889 -0.1028

O resultado acima pode ser verificado se está correto ou não, a partir de o


conhecimento de que a multiplicação de uma matriz com sua inversa deve resultar em
uma matriz de identidade. (a. a-1 = I)

>> inv (a) * a


ans =
1.0000 -0.0000 0.0000
0 1.0000 0

0 0.0000 1.0000

O aparecimento de 0, 0,0000 e -0,0000 no estágio acima são todos mesmo, é por


causa da precisão finita do processador sendo usado em o computador.

(ix.) Multiplicação por um escalar

Cada elemento de uma matriz pode ser multiplicado por um escalar.vamos multiplicar
cada elemento da matriz quadrada mágica 3x3 por 2.

>> a = magic(3)
a =
8 1 6

3 5 7
P á g i n a | 30

4 9 2

>> b = 2 * a
b =
16 2 12
6 10 14
8 18 4

(x.) Adição de Matriz

Uma vez que as matrizes acima a & b têm as mesmas dimensões, podemos adiciona-
los, elemento por elemento, com uma expressão simples como a + b.

>> c = a + b
c =
24 3 18

9 15 21
12 27 6

(xi.) Submatrizes

Uma parte da matriz pode ser extraída usando o mais poderoso operador de cólon do
MATLAB. Agora, considere o exemplo da matriz 4x5 de elementos aleatórios para o
estudo de submatrizes.

>> a = rand (4, 5)


a =
0.6787 0.6555 0.2769 0.6948 0.4387
0.7577 0.1712 0.0462 0.3171 0.3816
0.7431 0.7060 0.0971 0.9502 0.7655
0.3922 0.0318 0.8235 0.0344 0.7952

A 1ª , 3ª e 4ª colunas da matriz podem ser extraídas pelos seguintes comando.


>> a (:, 2: 4)
ans =
0.6555 0.2769 0.6948
0.1712 0.0462 0.3171
P á g i n a | 31

0.7060 0.0971 0.9502

0.0318 0.8235 0.0344

Os dois pontos por si só se referem a todos os elementos em uma linha ou coluna de


uma matriz. Da mesma forma o 3ª e 4ª linhas e todas as colunas da matriz podem ser
extraído.

>> a (3: 4, :)
ans =

0.7431 0.7060 0.0971 0.9502 0.7655


0.3922 0.0318 0.8235 0.0344 0.7952

O comando a (2: 3, 2: 4) tira os elementos do 2ª a 3ª linha e 2ª a 4ª colunas.

>> a (2: 3, 2: 4)
ans =

0.1712 0.0462 0.3171


0.7060 0.0971 0.9502

NOTA:

As linhas ou colunas a serem extraídas não precisam ser contínuas. Na ordem de


extraçao do elemento da 1ª linha e 4º linha de 2ª e 5ª colunas, precisamos digitar o
comando usando notação vectorial.

>> a ([1 4], [2 5])


ans =
0.6555 0.4387
0.0318 0.7952
A palavra-chave 'end' refere-se à última linha ou coluna. Por exemplo,

>> a (end, :)
ans =
0.3922 0.0318 0.8235 0.0344 0.7952

Extraídos da última linha da matriz, a última coluna da matriz com um (:,end), também
pode ser extraído. Podemos excluir linhas e colunas de uma matriz usando uma matriz
nula, que é apenas um par vazio de quadrados colchetes, por exemplo, para excluir a
3ª coluna da matriz a, podemos usar
P á g i n a | 32

>> a (:, 3) = [ ]

a =
0.6787 0.6555 0.6948 0.4387
0.7577 0.1712 0.3171 0.3816
0.7431 0.7060 0.9502 0.7655
0.3922 0.0318 0.0344 0.7952

A matriz resultante é agora uma matriz 4x4, após 3ª coluna foi excluído.

(xii.) Loops e Vectorização

O MATLAB fornece duas instruções de loop, o loop for e o loop while , usando na
qual um grupo de instruções pode ser executado repetidamente fixo número de vezes,
de forma controlada. Ele também tem dois controles de fluxo instrução, o if-else end
e o switch-case, para o controlo do fluxo do programa. Os comandos break, return e
continue são usados em associação fechadas com as instruções de controle de loop
e fluxo para encerrar o processo de loop ou passa o controle para a próxima
iteração. Podemos ser tentados a escrever o código MATLAB da mesma forma que
escreveríamos um programa em FORTRAN ou C, caso em que nosso código pode
ser dolorosamente lento.

Portanto, é altamente recomendável não fazer isso. É sempre melhor permitir que o
MATLAB processe todos os vetores ou matrizes de uma só vez, em vez do que usar
loops.

O processo de conversão de um loop for para uma função vetorial é referido para
como vetorização. A diferença no tempo de processamento entre um o código
vetorizado e um código que usa um loop for podem ser substanciais. A potencia do
MATLAB é realizado quando o conceito de vetorização é utilizado.

O código vetorizado tira vantagem, sempre que possível, das operações envolvendo
dados armazenados como vetores. A única maneira de fazer programas MATLAB
executados mais rápido é vetorizar os algoritmos que usamos para escrever o
programas. Embora todas as linguagens de programação possam usar 'loops for ' ou
'loops while', o MATLAB pode usar operações de vector ou matriz. Apesar das
instruções de loop estarem disponíveis no MATLAB, elas devem ser usadas com
P á g i n a | 33

moderação porque são computacionalmente ineficientes. Isso pode ser provado pelo
seguinte exemplo que envolve a criação de uma tabela de logaritmos.

>> tic
x = 0,01;

for k = 1:1000
y(k) = log10(x);
X = x + 0,01
end
toc

O código de computador acima registra log 10(x) para 1000 valor de x começando
com 0,01 e incrementado a cada vez pelo mesmo valor. Ele também mede o tempo
total gasto para fazer este trabalho. Agora, crie um arquivo que consiste no programa
acima e chame-o no prompt de comando digitando o 'arquivo nome ', caso contrário,
o tempo de digitação também será incluído, levando a resultados errados. Quando
executamos o código acima, a seguinte mensagem é exibido na tela. O tempo
decorrido é 0.063405 segundos.

Uma versão vectorizada do mesmo código é

>> tic
x = 0,01:0,01;10;
y = log10(x)
toc

O tempo decorrido é 0,031000 segundos.

A versão vectorizada do código leva apenas metade do tempo e portanto, é a forma


mais preferida. Portanto, é sempre aconselhável encontrar uma função de vector que
obterá o mesmo resultado de um loop for.

O tempo de processamento pode ser diferente no computador, dependendo do


configuração do processador em uso.

As funções tic e toc determinam o tempo necessário para executar uma série de
comandos no MATLAB e exibem o tempo em segundos, enquanto o tic começa um
stop watch times toc imprime o tempo decorrido, desde que o tic foi usado. Essas duas
P á g i n a | 34

funções trabalham juntas para medir o tempo decorrido. Precisamos colocar todo o
código MATLAB, para o qual o tempo de execução deve ser medido entre tic e toc.

1.4.5.3 Gráficos no Matlab

O MATLAB é um software muito eficiente e possui excelentes recursos gráficos na


criação e manipulação de gráficos, apresentando diversas funções e comandos
gráficos simples, mas de alto nível, para exibir dados em a forma de gráficos de linha
em coordenadas retangulares e polares, barra e gráficos de histograma, plotagens
de contorno, plotagens de malha e superfície em dois e três dimensões. Além disso,
podemos controlar precisamente a cor, o sombreamento, o eixo rotulagem e
aparência geral dos gráficos. MATLAB também pode ser usado para exibir vários tipos
de imagens, como imagens indexadas, imagens intensas e true color imagens, filmes
com animação que também podem ser criados. Podem ser confecionados gráficos
bidimensionais, tridimensionais, malhas e superfícies

Podemos digitar a demonstração no prompt de comando e selecionar os gráficos sob


a opção MATLAB para ver uma demonstração visual de uma extensa conjunto de
demonstrações para compreender as capacidades gráficas do MATLAB para traçar
gráficos 2-D, nesta seção. A tabela mostrada abaixo resume alguns comandos
gráficos freqüentemente usados do MATLAB.

Tabela : Alguns Comandos Gráficos do Matlab

Comando Matlab Explicação


Plot (x, y) Desenha o vector versus o vector x
Stem (x, y) Sequência discreta ou plot ‘stem’
Divide o gráfico em porções m por n, seleciona a p-ésima parte
Sub Plot (m, n, p)
para o plot da corrente
Bar (x) Gráfico de barras de um vector ou matriz
Hist (x) Histograma de elementos do vector x.
Axis ([xmin. Xmax. Ymin. Ymax]) Define a escala para os eixos x - e y
X label (‘text’) Adiciona um rótulo ao eixo x
Y label (‘text’) Adiciona um rótulo ao eixo y
Legend (‘text’) Exibe uma legenda no gráfico atual
Title Adiciona um título ao gráfico atual.
Grid Adiciona linhas de grade principais ao catual eixo.
Log log (x, y) Traça o gráfico xy usando a escala logarítmica para os eixos x e y
Semi log x (x, y) Traça o gráfico xy usando a escala logarítmica para o eixo x
Semilog y (x, y) Traça o gráfico xy usando a escala logarítmica para o eixo y

(i.) Criando Gráficos


P á g i n a | 35

Vamos criar, por exemplo, um gráfico linear de Sin (t) e Cos (t) para todo valores t que
variam de 0 a 2, com incremento de / 100. Podemos usar a notação para criar um
vector linha t de elementos igualmente espaçados.

>> t = 0: pi / 100: 2 * pi;

Podemos verificar o comprimento desse vector como 201. Agora, sem usar as
instruções de loop, podemos encontrar Sin (t) & Cos (t), com a ajuda de vectorização.

>> x = sin (t);


>> y = cos (t);

A função MATLAB Sin calcula Sin (t) para cada elemento de vector t para criar o vector
x de 201 elementos. Da mesma forma, o vector y terá 201 valores de cosseno dos
elementos de t. Agora, temos que traçar os dois vetores x e y em relação a t, o que
pode ser feito facilmente usando o comando plot.

>> plot (t, x, t, y);

Uma nova janela de figura, chamada 'figura 1' por padrão, será aberta consistindo em
um ciclo de ondas seno e cosseno.

O MATLAB seleciona automaticamente as cores apropriadas, intervalos de eixo,


marque os locais, etc. Se a figura não for exibida ou impressa em cores, ambas as
curvas serão em preto. Portanto, é melhor mudar a linha estilo alterando os
parâmetros do comando de plotagem para distingui-los.

>> plot (t, x, '-', t, y, '-');

A curva cosseno é traçada usando a linha tracejada para saber sobre as opções
disponíveis para tipos de linha, símbolos de plotagem e cores procuram ajuda em o
comando plot.

Também podemos adicionar uma legenda apropriada para cada curva, usando o
comando da legenda.

>>legend('x = sin(t)','y = cos(t)')

Podemos ver as mudanças acontecendo, na janela da figura, com cada um desses


comandos. Vamos agora adicionar um rótulo aos eixos x e y, ajustar o escala do eixo
x de 0 a 2, e do eixo y de -1 a 1, adicionar linhas de grade e também um título para
o gráfico, usando os seguintes comandos.
P á g i n a | 36

xlabel(4) % x-axis label

ylabel('Sin (t), Cos (t)') % y-axis labe


%axis([0,10,-1,1])
axis([0 2 * pi -1 1]);
grid
title ('plotagem de seno e cosseno de 0 a 2 / pi');

A barra invertida (1) na frente do pi, no comando do título permite que Símbolo grego
a ser inserido no título para obter mais informações sobre o tópico acima em 'anotando
gráficos' dentro da opção 'gráficos'.

>> t = 0 : pi/100 : 2 * pi;


x =sin (t);
y = cos (t);

% plot (t, x, t, y);


plot (t, x, '-', t, y, '-');
legend('x = sin(t)','y = cos(t)')
xlabel('-2pi< x < 2pi') % Rotulo do eixo –x
ylabel('Sin (t), Cos (t)') % Rotulo do eixo – y
axis ([0 2 * pi -1 1]);

grid
title ('plotagem de seno e cosseno de 0 a 2pi');

(i.) Criando diversos gráficos numa mesma janela gráfica.

Plote x e y em dois gráficos separados, dividindo o espaço gráfico em duas porções,


que podem ser feitas pelo comando sub plot, é assumido que os vetores t, x, y já foram
gerados anteriormente.

>> sub plot(2,1,1);

Este comando divide o espaço gráfico em 2 partes e selecione o primeira parte do


gráfico atual.

>> plot (t, x, ':');

Isso representa a curva senoidal como uma linha pontilhada no espaço reservado.
P á g i n a | 37

Os comandos fornecidos a seguir fornecerão o gráfico de forma adequada.

>> xlabel (4’);


>> ylabel(‘Sin (t)’);
>>title('plotagem cosseno de 0 a 2Pi');
>> axis([0 2 * Pi -1 1]);

A figura abaixo mostra a aparência final do Sine & Cosine curvas plotadas
separadamente.

>> t = 0 : pi/100 : 2 * pi;


x =sin (t);

subplot (2,1,1);
y = cos (t);
plot (t, x, ':');
xlabel(4') % Rotulo do eixo –x
ylabel('Sin(t)') % Rotulo do eixo – y

title ('plotagem cosseno de 0 a 2pi');


axis ([0 2 * pi -1 1]);

(ii.) Criando um gráfico de tronco

O comando do MATLAB stem exibe a sequência discreta ou stem plot. Substitua o


comando plot por stem em qualquer um dos anteriores discutidos os códigos Seno e
Cosseno MATLAB e observe as mudanças que ocorrer, por exemplo, execute o
seguinte para obter o gráfico do tronco da onda senoidal.

O incremento agora é Pi / 10, em vez de Pi / 100.

>> axis ([0 2 * pi -1 1]);


>> t = 0 : pi/10 : 2 * pi;
x = sin (t);
stem(t, x);
axis ([0 2 * pi -1 1]);

(iii.) Criando um gráfico de barras


P á g i n a | 38

Os gráficos de barras são adequados para exibir dados discretos. Por defeito, um o
gráfico de barras representa cada elemento em uma matriz como uma barra. Cada
barra é distribuído ao longo do eixo x, com cada elemento em uma coluna desenhada
em um localização diferente. Todos os elementos em uma linha são agrupados ao
redor do mesmo localização no eixo x. Vamos ilustrar isso com um exemplo
simples. Deixar nos traçar um gráfico de barras dos elementos de uma matriz
quadrada mágica de 3x3 dimensões.

Observe na figura que as barras do grupo 1 no eixo x correspondem aos elementos


[8 1 6] de 1ª linha da matriz z.

As barras nos grupos 2 e 3 correspondem de forma semelhante ao 2º e 3º fila dos


elementos de z.

>> z = magic (3);


bar (z);
grid

1.4.6 Geração de outros gráficos basiscos

1.4.6.1 Geraçao de de sinal de várias rampas (fallowing)

%---------------------------------------------------- --------
% Objetivo: escrever um programa para gerar o sinal de varias
% rampas “fallowing”
% x (t) = t + 1 (-1 <= t <0)
% = 1 (0 <= t <1)
%= t (1 <= t <2)
%= 2 (2 <= t <3)
%= -t + 5 (3 <= t <5)
%------------------------------------------------------------
t=-2:0.01:6 ;

x1= (t+1).*(t>=-1 & t<0);

x2= 1.*(t>=0 & t<1);

x3= t.*(t>=1 & t<2);

x4= 2.*(t>=2 & t<3);


P á g i n a | 39

x5= (-t+5).*(t>=3 & t<=5);

x= x1+x2+x3+x4+x5 ;

figure(1)
plot(t,x);
axis([min(t) max(t) min(x)-0.5 max(x)+0.5]);
xlabel('Índice de tempo t (seg.)');

ylabel('amplitude x (t)');
title(' sinal x(t)');

1.4.6.2 Adição de Sinal

%---------------------------------------------------- --------
% Objetivo: escrever um programa para realizar a adição, ou
seja, x (t) = x1 (t) + % x2 (t)
% x1(t)= cos(6t)
% x2(t)= cos(8t)
%------------------------------------------------------------
t= 0:pi/400:pi;
x1=cos(6*t);
x2=cos(8*t);
x= x1+x2;
figure(1)
subplot(3,1,1);

plot(t,x1);
axis([min(t) max(t) min(x1)-0.5 max(x1)+0.5]);
xlabel('índice te Tempo t (seg)');
ylabel('x1(t)');
title('sinal 1: onda de cosseno de frequência 3/pi Hz');

subplot(3,1,2);
plot(t,x2);
axis([min(t) max(t) min(x2)-0.5 max(x2)+0.5]);
xlabel('TIME INDEX t(sec)');
P á g i n a | 40

ylabel('x2(t)');

title('sinal 2: onda de cosseno de frequência 4/pi Hz');


subplot(3,1,3);
plot(t,x);
axis([min(t) max(t) min(x)-0.5 max(x)+0.5]);
xlabel('índice te Tempo t (seg)');

title(' SINAL RESULTANTE: sinal 1 + sinal 2');

1.4.6.3 Multiplicação de sinal

%------------------------------------------------------------
% Objetivo: escrever um programa para realizar
% x(t)=x1(t)x2(t)
% x1 (t) = cos (2t)
% x2 (t) = cos (8t)
%------------------------------------------------------------
t= 0:pi/400:pi;
x1=cos(4*t);

x2=cos(8*t);
x= x1.*x2;
figure(1)
subplot(3,1,1);
plot(t,x1);
axis([min(t) max(t) min(x1)-0.5 max(x1)+0.5]);

xlabel('índice te Tempo t (seg)');


ylabel('x1(t)');
title('sinal 1: onda de cosseno de frequência 2/pi Hz');
subplot(3,1,2);
plot(t,x2);

axis([min(t) max(t) min(x2)-0.5 max(x2)+0.5]);


xlabel('índice te Tempo t (seg)');
ylabel('x2(t)');
P á g i n a | 41

title('sinal21: onda de cosseno de frequência 4/pi Hz');

subplot(3,1,3);
plot(t,x);
axis([min(t) max(t) min(x)-0.5 max(x)+0.5]);
xlabel('índice te Tempo t (seg)');
ylabel('x(t)=x1(t).x2(t)');

title(' SINAL RESULTANTE: produto do sinal 1 & sinal 2');

;
P á g i n a | 42

2. LAB#2. “ANÁLISE DE SINAIS -MATALAB”

2.1 Objectivos:

 Utilizar o Matlab para representar e manipular alguns sinais elementares:


 Saber classificar um sinal como sendo um sinal contínuo ou um sinal discreto.
 Dominar os conceitos de período de amostragem e frequência de amostragem.
 Saber classificar um sinal como sendo um sinal par ou um sinal impar.
 Saber decompor um qualquer sinal na sua componente par e impar
 Saber calcular a energia e a potência de um sinal.
 Saber classificar um sinal como sendo um sinal de energia ou um sinal de
potência.
 Saber reconhecer, ou executar, operações de inversão, compressão,
expansão, avanço, e atraso de um sinal.

2.2 Fundamentação teórica

Os sistemas de comunicação consistem em um conjunto de blocos funcionais


interconectados que transferem informação entre dois pontos por meio de umas séries
sequencial de operações ou processamento de sinais. A Teoria das Comunicações
trata os modelos e técnicas matemáticas que podem ser usadas no estudo e análise
dos sistemas de comunicação.
Sinal é uma função matemática de uma ou mais variáveis independentes, que
representa informações. Os sinais elementares aparecem com maior frequência no
estudo dos sistemas lineares, dentre os quais destacam-se: o sinal degrau unitário, o
sinal impulso unitário, o sinal rampa e os sinais exponenciais e senoidais. Esses sinais
são usados na construção de sinais mais complexos.
Nos sistemas de comunicação os sinais eléctricos, tais como tensão e corrente, são
grandezas que variam no tempo. Os elementos funcionais de um sistema são os
circuitos eléctricos, mas tanto os circuitos eléctricos (sistemas) como os sinais podem
ser representados tanto no domínio do tempo quanto no da frequência se a variável
independente for o tempo ou no domínio da frequência se a variável independente for
a frequência.

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

42
P á g i n a | 43

Na análise e estudo dos sistemas de comunicação frequentemente é necessário e


conveniente descrever ou representar os sinais e sistemas no dominó da frequência
na qual tem os conceitos de "espectro" e de "largura de banda."

2.3 Material utilizado:

− Computador pessoal (PC)


− Software MATLAB

2.4 Procedimento Experimental

2.4.1 Actividade (A1) – Criação e armazenamento de sinais em Matlab

Base de tempo: t = [0.0 0.1 0.2 0.3]

Amplitude do sinal: x = [1.0 3.2 2.0 8.5]

A construção principal de dados em Matlab é o arranjo numérico, uma coleção


ordenada de dados numéricos reais ou complexos, com uma ou mais dimensões. Os
objetos de dados básicos do processamento de sinais (sinais unidimensionais, ou
sequências, sinais multi-canais, e sinais bidimensionais) são todos naturalmente
acomodados na representação de arranjos (vetores e matrizes).
O Matlab representa sinais de dados amostrados unidimensionais, ou sequências,
como vetores. Vectores são arranjos de dimensões 1 x N (vector linha) ou N x 1 (vector
coluna), onde N é o número de amostras na sequência. Para se armazenar uma
sequência no Matlab deve-se entrar uma lista de elementos na linha de comando. A
sentença x = [1 2 3 4 5].
Criar uma sequência real de cinco elementos em um vector linha. Ela pode ser
convertida para um vector coluna fazendo-se a transposição do vector x = [1 2 3 4 5]’.
Vectores colunas podem ser estendidos naturalmente para o caso de sinais multi -
canais (multidimensionais), no qual cada canal é representado por uma coluna de um
arranjo tipo matriz.
Outra forma de se criar vectores de dados é usar o operador de dois pontos. Considere
o tempo de um segundo de um sinal amostrado a 1000 Hz. Um vector de tempo
apropriado para esse sinal seria:
t=0:1 e -3:1; ou t = 0:0.001:1;

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

43
P á g i n a | 44

Onde o operador de dois pontos cria um vetcor linha de 1001 elementos


representando o tempo de zero a um segundo, em passos de milésimos de segundo.
Se pode usar a função linspace para criar o mesmo vector de dados:
t = linspace(0,1,1000);

Digite os seguintes comandos:


>> t1 = [0 .1 .2 .3];
t2 = 0:0.1:0.3;
t3 = linspace(0, 0.3, 4);

T = [t1 t2 t3];
X = sin(T)
O que fez o código mostrado acima?

2.4.2 Actividade (A2) – Sinais de tempo contínuos e tempo discreto

2.4.2.1 Sinal contínuo

Sinal contínuo sinal diz-se um sinal contínuo quando a variável independente é


contínua.
Escreva um script Matlab que crie o sinal x(t) que representa um sinal contínuo
x(t) = cos(t)e-0,1t .Consideremos por exemplo Ts = 0.1s .

>> ts = 0.1;
t = 0:ts:20;
xt = cos(t).*exp(-0.1*t);
figure(1);
plot(t,xt)

grid on

Escreva um script Matlab que crie a representação formal do sinal

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

44
P á g i n a | 45

0, 𝑡 < −2
2, −2 ≤ 𝑡 < 0
𝑓( 𝑥 ) = {
1, 0≤𝑡<2
0, 𝑡≥2
>> ts = 0.1;

t = 0:ts:20;
xt = cos(t).*exp(-0.1*t);
figure(1);plot(t,xt)
grid on
>> t=[-4 -2 0 2;-2 0 2 4];
x=[ 0 2 1 0; 0 2 1 0];

plot(t,x,'-k','LineWidth', 3);
axis([-4 4 -1 2.5]);
grid on
hold on
op=[-2 0 2];

cp=[-2 0 2];
p1=[2 1 0];
p2=[0 2 1];
plot(op,p2,'ok');
stem(cp,p1,':k','filled')

hold off

2.4.2.2 Sinal discreto

Escreva um script Matlab que crie o sinal x[n] que representa um sinal um sinal discreto
x[n] = cos(n)e-0,1n .,0 ≤ 𝑛 ≤ 20
>> n = 0:20;
xn = cos(n).*exp(-0.1*n);
figure(2);

stem(n,xn,'filled')
hold on

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

45
P á g i n a | 46

plot(n,xn,':');

grid on
hold off

A repreentaçao do script Matlab do pratica 2 pode ser obtida através de um script


bastante mais simples, aproveitando o facto de o Matlab, por defeito, unir os pares
ordenados consecutivos com segmentos de recta
>> n = 0:20;
xn = cos(n).*exp(-0.1*n);
figure(2);
stem(n,xn,'filled')

hold on
plot(n,xn,':');
grid on
hold off
>> t=[-4 -2 -2 0 0 2 2 4];
x=[0 0 2 2 1 1 0 0 ];

plot(t,x);
axis([-4 4 -1 2.5]);
grid on

Evidentemente que a partir da figura M2.4 não é possível saber se, nos pontos de
descontinuidade, o sinal é definido à esquerda ou à direita. Note que se fosse
necessário recolher amostras do sinal com base nesta figura, seria necessário optar
por uma das hipóteses, resultando, respectivamente, e utilizando um intervalo Ts=
0.1s , os sinais discretos que se mostram nas figuras dos exercício 3 e
M2.10, que podem ser obtidos com o script
>> n=-4:3;
figure(1)
x=[0 0 2 2 1 1 0 0];
stem(n,x,'filled')

axis([-4 4 -1 2.5]);

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

46
P á g i n a | 47

grid on

figure(2)
n=-3:4;
x=[0 0 2 2 1 1 0 0];
stem(n,x,'filled')
axis([-4 4 -1 2.5]);

grid on

sendo que apenas o sinal da figura M2.9 corresponde a um possível conjunto de


amostras do sinal contínuo x(t)

2.4.2.3 Sinais amostrados

Fontes de sinais analógicos incluem geradores eletromagnéticos, de áudio, sonar,


biomédico e outras. Sinais analógicos precisam ser amostrados e quantizados antes
de serem processados digitalmente.

(i.) Amostragem:

x[n] = xa(nTs)
x- é um sinal discreto amostrado a partir de um sinal analógico xa com um período TS
e frequência de amostragem F S= 1/TS.
Experimente o seguinte trecho de programa Matlab (script):
>> Fs = 100; N = 1000;
tempofinal = 9.99;
t1 = (0:N-1)/Fs;
t2 = 0:1/Fs:tempofinal;

x1 = sin(2*pi*2*t1);
x2 = sin(2*pi*3*t2);
plot(x1), figure, plot(x2)
Quantos ciclos são mostrados em cada um dos sinais plotados pelo código
acima?

Uma alternativa à criação de sinais é usar uma função das diversas caixas de
ferramentas do Matlab (toolbox). Uma variedade de funções Matlab gera formas de

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

47
P á g i n a | 48

onda. Cada uma delas requer que você inicie com um vector representando uma base
temporal. Algumas dessas funções serão descritas mais adiante.

(ii.) Aliasing:

Sinais digitais são normalmente derivados da amostragem de sinais de tempo


contínuo via Conversor Analógico-Digital (A/D). Se o sinal contínuo, xa(t), é limitado
em banda, significa que ele não contém frequências acima de uma frequência máxima
fM. O teorema da amostragem (Shannon) diz que esse tipo de sinal pode ser
completamente recuperado de um conjunto de amostras se a frequência de
amostragem fs for maior do que duas vezes a máxima frequência do sinal contínuo a
ser amostrado: 𝑓𝑠 > 2𝑓𝑀
Esta frequência máxima fM é conhecida como a frequência de Nyquist. Se a frequência
de amostragem não for maior que duas vezes a frequência de Nyquist, o sinal contínuo
não pode ser unicamente recuperado e acontece o ‘aliasing’ (um sinal ‘apelido’ é
recuperado).
>> Fs = 100; N = 1000;
tempofinal = 9.99;
t1 = (0:N-1)/Fs;
t2 = 0:1/Fs:tempofinal;
x1 = sin(2*pi*2*t1);
x2 = sin(2*pi*3*t2);

plot(x1), figure, plot(x2)


Existe aliasing em algum dos sinais amostrados? Qual? Porquê?

 Visualização de sinais

Visualizar a amplitude do sinal versus índice temporal


>> % Funções: plot, stem, stairs, strips
t = [0.1 0.2 0.3 0.4];
x = [1.0 8.0 4.5 9.7];
plot(t,x)

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

48
P á g i n a | 49

figure, stem(t,x)

t = [0.1 0.2 0.3 0.4];


x = [1.0 8.0 4.5 9.7];
plot(t,x)
figure, stem(t,x)
figure, stairs(t,x)

t = [0.1 0.2 0.3 0.4];


x = [1.0 8.0 4.5 9.7];
plot(t,x)
figure, stem(t,x)
figure, stairs(t,x)
fs = 1000;
ts = 0:1/fs:2;
f = 250 + 240*sin(2*pi*ts);
x = sin(2*pi*f.*ts); %.*=>multiplic.elemento a elemento
strips(x,0.25,fs)
plot(ts,x)

plot(ts(1:200),x(1:200))

Para que serve o comando strips? (dica: digite na linha de comandos ’help
strips’.) O que faz o operador.* ?

2.4.3 Actividade (A3) – Sinais pares e sinais ímpares

2.4.3.1 Gerar componentes pres e ímpares

Recorrendo ao Matlab, resolva graficamente o o sinal definido por


0, 𝑡 < −2
2, −2 ≤ 𝑡 < 0
𝑓( 𝑥 ) = {
1, 0≤𝑡<2
0, 𝑡≥2
Esboce o sinal. Calcule e esboce as suas componentes pares e impar.
xd=ones(1,100);
x=[0*xd 2*xd xd 0*xd];

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

49
P á g i n a | 50

ts=(8/length(x));

t=-4:ts:4-ts;
xp=(x+fliplr(x))/2;
figure(1);
plot(t,xp)
axis([-4 4 -0.5 2]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal par');

grid on
xi=(x-fliplr(x))/2;
figure(2);plot(t,xi)

axis([-4 4 -1 1]);
xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal impar');

grid on

Obtendo assim rapidamente as figuras 1 e 2. Podemos verificar que, embora os


esboços obtidos dêem uma boa ideia da evolução das componentes par e impar, o
cálculo de xp(t) e xi(t) não estão feitos correctamente. Vamos refazer os gráficos com
um menor número de pontos
>> xd=ones(1,100);
x=[0*xd 2*xd xd 0*xd];
ts=(8/length(x));

t=-4:ts:4-ts;
xp=(x+fliplr(x))/2;
figure(1);plot(t,xp)
axis([-4 4 -0.5 2]);
grid on

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

50
P á g i n a | 51

xi=(x-fliplr(x))/2;

figure(2);
plot(t,xi)
axis([-4 4 -1 1]);
grid on
xd=ones(1,10);

x=[0*xd 2*xd xd 0*xd];


ts=(8/length(x));
t=-4:ts:4-ts;
figure(3);
plot(t,x,'-*')
axis([-4 4 -0.5 2.5]);

grid on
xp=(x+fliplr(x))/2;
figure(4);
plot(t,xp,'-*')
axis([-4 4 -0.5 2]);

grid on
xi=(x-fliplr(x))/2;
figure(5);
plot(t,xi,'-*')
axis([-4 4 -1 1]);

grid on

Observe as figuras 3, 4 e 5. Note que embora o sinal x(t) esteja bem definido (com
amostragem à esquerda), xp(t) p e xi(t) estão mal calculados. Basta notar que o gráfico
da figura 3 não corresponde a um sinal par, e gráfico da figura 5 não corresponde a
um sinal impar.
Para obter a componente par e impar do sinal o script tem de ser um pouco mais
complexo
xd=ones(1,10);

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

51
P á g i n a | 52

x=[0*xd 2*xd xd 0*xd];

ts=(8/length(x));
t=-4:ts:4-ts;
tinv=-fliplr(t);
tinv1=min([t,tinv]);
tinv2=max([t,tinv]);

tinv=tinv1:ts:tinv2;
tm=t(1)-tinv(1);
tt=1:length(t);
x1=zeros(1,length(tinv));
x1(tt+tm)=x;
x=x1;

xp=(x+fliplr(x))/2;
xi=(x-fliplr(x))/2;
figure(6);
plot(tinv,xp,'-*')
axis([-4 4 -0.5 2.5]);

grid on
figure(7);
plot(tinv,xi,'-*')
axis([-4 4 -1.5 1.5]);
grid on

Verifique que, efectivamente, como teria que ser, a figura 6 representa um sinal par e
a figura 7 representa um sinal impar.
Para uma representação mais conducente com o carácter contínuo do sinal podemos
agora fazer uma representação com um maior número de pontos
xd=ones(1,100);

x=[0*xd 2*xd xd 0*xd];


ts=(8/length(x));

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

52
P á g i n a | 53

t=-4:ts:4-ts;

tinv=-fliplr(t);
tinv1=min([t,tinv]);
tinv2=max([t,tinv]);
tinv=tinv1:ts:tinv2;
tm=t(1)-tinv(1);

tt=1:length(t);
x1=zeros(1,length(tinv));
x1(tt+tm)=x;
x=x1;
xp=(x+fliplr(x))/2;
xi=(x-fliplr(x))/2;

figure(8);
plot(tinv,xp,'.')
axis([-4 4 -1 2]);
figure(9);
plot(tinv,xi,'.')

axis([-4 4 -1 1]);

Observe as figuras 8 e 9.

2.4.3.2 Figuras das Simetrias Par e Ímpar

% Gera as figuras das Simetrias Par e Ímpar


%
%----------------------------------------------------
% Gera as figuras da função ímpar - Sinal sen(t)
%----------------------------------------------------
t = -10:0.1:10;
x1 = sin(t);
plot(t, x1)

xlabel('t')
ylabel('x(t)')

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

53
P á g i n a | 54

title('Sinal Ímpar - Seno')


%----------------------------------------------------
% Gera as figuras da função par - Sinal cos(t)
%----------------------------------------------------
t = -10:0.1:10;
x1 = cos(t);
plot(t, x1, 'r')
xlabel('t')
ylabel('x(t)')
title('Sinal Par - cos')

2.4.3.3 Programa para componente par e ímpar

% Objetivo: escrever um programa para componente par e ímpar


% do sinal
% x(t)= 2 (0 <t <= 2)
% x(t)=0 (em outro lugar)
t=-4:0.01:4 ;
x1= 2.*(t>0 & t<=2);
x2= 0.*(t>2 & t<0);
x= x1+x2;
t_inverso = -fliplr(t);
x_inverso = fliplr(x);
x_par = (0.5)*(x + x_inverso);
x_impar = (0.5)*(x - x_inverso);
a= min(min(t),min(t_inverso));
b= max(max(t),max(t_inverso));
subplot(3,1,1);
plot(t,x);
grid;
axis([a b min(x) max(x)+0.5]);
xlabel('índice de tempo t (seg)');
ylabel('x(t)');
title('sinal original');
subplot(3,1,2);
plot(t,x_par);
grid;

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

54
P á g i n a | 55

axis([a b min(x_par)-0.5 max(x_par)+0.5]);


xlabel('índice de tempo t (seg)');
ylabel('xe(t)');
title('Componente par do sinal x(t)');
subplot(3,1,3);
plot(t,x_impar);
grid;
axis([a b min(x_impar)-0.5 max(x_impar)+0.5]);
xlabel('índice de tempo t (seg)');
ylabel('xo(t)');
title('Componente impar do sinal x(t)');

2.4.3.4 Decomposição de sinal complexa

% Objetivo: escrever um programa para conjugar o componente


% par e o ímpar componente do sinal x (t)
% x (t) = exp ((- 1 + j2pi) t)
clc;
close all;
clear all;
t=-2:0.05:2 ;
x=exp((-0.8+j*2*pi).*t);
x_conj_inv = fliplr(conj(x));
x_conj_par = (0.5)*(x + x_conj_inv);
x_conj_impar= (0.5)*(x - x_conj_inv);
figure(1)
subplot(4,1,1);
stem(t,real(x));
grid; xlabel(' índice de tempo t(seg)')
ylabel('Real(x(t))');
title('valores reais do sinal original');
subplot(4,1,2);
stem(t,imag(x));
grid;
xlabel(' índice de tempo t(seg)');

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

55
P á g i n a | 56

ylabel('Imag(x(t))');
title('valores imaginarios do sinal riginal');
subplot(4,1,3);
stem(t,abs(x));
grid;
xlabel(' índice de tempo t(seg)');
ylabel('Mag(x(t))');
title('magnitude dos valores do sinal original');
subplot(4,1,4);
stem(t,angle(x));
grid; xlabel(' índice de tempo t(seg)');
ylabel('fase(x(t))');
title('valores da fase do sianal do original');
figure(2)
subplot(4,1,1);
stem(t,real(x_conj_par));
grid;
xlabel(' índice de tempo t(seg)');
ylabel('Real(conj.par x(t))');
title('valores do conjugado do sinal par');
subplot(4,1,2);
stem(t,imag(x_conj_impar));
grid;
xlabel('índice de tempo t(seg)');
ylabel('imag(conj.par x(t))');
title('valores imaginario do sinal par');
subplot(4,1,3);
stem(t,abs(x_conj_par));
grid; xlabel(' índice de tempo t(seg)');
ylabel('Mag(conj.par x(t))');
title('magnitude dos valores do conjugado do sinal par');
subplot(4,1,4);
stem(t,angle(x_conj_par));
grid;

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

56
P á g i n a | 57

xlabel(' índice de tempo t(seg)');


ylabel('Fase(conj.par x(t))');
title('valores do conjugado do sinal par');
figure(3)
subplot(4,1,1);
stem(t,real(x_conj_impar));
grid;
xlabel(' índice de tempo t(seg)');
ylabel('Real(conj.impar x(t))');
title('valores reais do conjugado do sinal impar');
subplot(4,1,2); stem(t,imag(x_conj_impar));
grid; xlabel(' índice de tempo t(seg)');
ylabel('imag(conj.impar x(t))');
title('valores imaginario do conjugado do sinal impar');
subplot(4,1,3);
stem(t,abs(x_conj_impar));
grid;
xlabel(' índice de tempo t(seg)');
ylabel('Mag(conj.impar x(t))');
title('magnitude dos valores do conjugado do sinal
impar');
subplot(4,1,4);
stem(t,angle(x_conj_impar));
grid;
xlabel('índice de tempo t(seg)');
ylabel('Fase(conj.impar x(t))');
title('valores de fase do conjugado do sinal impar');

2.4.4 Actividade (A4) – Sinais Periódicos e não Periódicos

2.4.4.1 Sinais Periódicas

Recorra ao Matlab para esboçar os sinais pela função x(t). Considere o sinal contínuo
x(t) = cos(10π t) definidos no intervalo [0 ;π/5].

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

57
P á g i n a | 58

>> f0=5;
t=0:0.01:pi/5;
xt=cos(2*pi*f0*t);
subplot(3,2,1)
plot(t,xt);
grid on
axis([min(t) max(t) min(xt) max(xt)])
for k=2:2:10
fs=k*f0;
ts=1/fs;
tn=0:ts:pi/5;
xn=cos(2*pi*f0*tn);
subplot(3,2,1+k/2)
stem(tn,xn,'filled');
axis([min(tn) max(tn) min(xn) max(xn)])
hold on
plot(t,xt,'r:');
hold off
end
Obtemos os gráficos da figura.Note que os sinais amostrados, sendo sinais discretos,
devem ser indexados a n , e não explicitamente aos instantes de tempo em que as
amostras foram obtidas.

…….
for k=2:2:10
N=k;
om0=2*pi/N;
n=0:4*N;
xn=cos(om0*n);
subplot(3,2,1+k/2)
stem(n,xn,'filled');
axis([min(n) max(n) min(xn) max(xn)])
end

2.4.4.2 Gerar Figuras das funções quadradas

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

58
P á g i n a | 59

%------------------------------------------------- ---
% Gera as figuras das funções quadradas
% %----------------------------------------------------

>> close all


clf
t=-10:0.001:10;
y=square(t*pi,50);
plot(t,y)
axis([-10 10 -3 3])
line([-10 0 0 0 0 10], [0 0 -5 5 0
0],'linewidth',.8,'color','k');

2.4.4.3 Gerar Figuras da onda quadrangular

%----------------------------------------------------
% Gera as figuras da onda quadrangular
%----------------------------------------------------
close all
clf
t=-20:0.001:20;
subplot(2,2,1);
hold on
y=(square(2*pi/6*t,100/3)+1)+2*square(2*pi/6*(t-
2),100/3).*(-square(2*pi/6*t,100/3)+1);
plot(t,y,'r.-')
axis([-20 20 -6 8])
line([-20 0 0 0 0 20],[0 0 5 -2 0
0],'linewidth',.8,'color','r')
grid
str=strcat('operação ',['y=x(' num2str(i) 'x)'])
title(str,'fontsize',10,'FontAngle','italic')
xlabel('Eixo x','FontAngle','italic')
ylabel('Eixo y','FontAngle','italic')

2.4.4.4 Gerar figura da função x = (cos(5*t)).^2;

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

59
P á g i n a | 60

%----------------------------------------------------
% Gera a figura da x = (cos(5*t)).^2
%----------------------------------------------------
t = 0:0.01:3*pi/5;
x = (cos(5*t)).^2;
plot(t, x)
grid
title('Sinal x = cos^2(5t)')
xlabel('t')
ylabel('x(t)')
yy = [0 1];
xx1 = pi/5;
xx2 = 2*pi/5;
xx3 = 3*pi/5;
hold on
plot([pi/5 pi/5], yy, 'r')
plot([2*pi/5 2*pi/5], yy, 'r')
plot([3*pi/5 3*pi/5], yy, 'r')
% print Exemplo2.png -dpng
%----------------------------------------------------

2.4.4.5 Gerar figuras das funções (x1=cos(3.5*t); x2=sin(2*t); x3= 2*cos(7*t/6);


Soma=x1+x2+x3)

%----------------------------------------------------
% Gera as figuras das funções
% x1=cos(3.5*t); x2=sin(2*t); x3= 2*cos(7*t/6);Soma=x1+x2+x3;
%----------------------------------------------------

t = 0:0.1:36*pi;
x1 = cos(3.5*t);
x2 = sin(2*t);
x3 = 2*cos(7*t/6);
Soma=x1+x2+x3;
subplot(411)
plot(t, x1)
title('Sinal x_1')

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

60
P á g i n a | 61

grid
xlabel('t')
ylabel('x(t)')
subplot(412)
plot(t, x2)
title('Sinal x_2')
grid
xlabel('t')
ylabel('x(t)')
subplot(413)
plot(t, x3)
title('Sinal x_3')
grid
xlabel('t')
ylabel('x(t)')
subplot(414)
plot(t, Soma)
yy = -5:0.1:5;
Tam = length(yy);
xx1 = 12*pi;
xx2 = 24*pi;
xx3 = 36*pi;
hold on
plot(xx1, yy, 'r')
plot(xx2, yy, 'r')
plot(xx3, yy, 'r')
title('Sinal x_1 + x_2 + x_3')
grid
xlabel('t')
ylabel('x(t)')
% print Exemplo1.png –dpng

2.4.4.6 Construir a função periódica com Operações Básicas (1)

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

61
P á g i n a | 62

%----------------------------------------------------
% Gera operações básicas
%----------------------------------------------------
close all
clf
% Construir a função periódica
t=-20:0.01:20;
hold on
y=(sawtooth(2*pi/2*t,1)+1).*(2*square(2*pi/4*t,50)+2)/2 -
(2*square(2*pi/4*(t-2),50)+2)/2
x=(2*square(2*pi/6*t,100/3)-
2).*square(2*pi/4*t,50)+(2*square(2*pi/6*t,100/3)+2)/2
plot(t,x,'b.-','color','r')
plot(t,y,'b.-','color','b')
line([-20 0 0 0 0 20],[0 0 20 -2
0],'linewidth',1.5,'color','r')
set(gca,'xtick',-12:1:12)
axis([-12 12 -8 8])
grid on

2.4.4.7 Construir a função periódica com Operações Básicas (2)

%----------------------------------------------------
% Gera operações básicas
%----------------------------------------------------
close all
clf
% Construir a função periódica
t=-20:0.01:20;
for i=1:2
subplot(2,1,i)
x=square(2*pi/4*t,25)
hold on
plot(t,x,'r.-','color','r')
line([-20 0 0 0 0 20],[0 0 20 -20 0
0],'linewidth',1.5,'color','r')

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

62
P á g i n a | 63

set(gca,'xtick',-12:1:12)
axis([-12 12 -3 3])
grid on
end

2.4.4.8 Sinal aperiódica

close all
clf
% Construir a função aperiódica
x=-20:0.01:20;
y=(x.^2).*rectpuls(x,2.1)-rectpuls(x,2.1);
plot(x,y,'r.-')
hold on
line([-20 0 0 0 0 20],[0 0 20 -20 0
0],'linewidth',1.5,'color','r')
set(gca,'xtick',-12:1:12)
axis([-12 12 -3 3])
grid on

2.4.4.9 Sinais de Tempo Discreto e Contínuo

%----------------------------------------------------
% Sinais de Tempo Discreto e Contínuo
%----------------------------------------------------
x = [1 2 3 4 5 6 5 4 3 2 1];
stem(x)
title('Sinal de Tempo Discreto')
xlabel('x[n]')
xlabel('n')
ylabel('x[n]')
grid
%----------------------------------------------------
% Gera a figura sinal discreto
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

63
P á g i n a | 64

figure
plot(x)
title('Sinal de Tempo Contínuo')
xlabel('t')
ylabel('x(t)')
grid
%----------------------------------------------------

2.4.4.10 Sinais Periódicos e Aperiódicos

%----------------------------------------------------
% Gera as figuras dos sinais periódicos
%----------------------------------------------------
% Sinal periódico contínuo: onda quadrada
t= 0:.001:1;
plot(t, square(10*pi*t+0.5))
axis([0 1 -1.1 1.1])
xlabel('t')
ylabel('x(t)')
title('Sinal Periódico Contínuo')
grid
figure
%----------------------------------------------------
% Sinal periódico discreto: onda quadrada
%----------------------------------------------------
n = -8:7;
stem(n, square(pi*n/4+0.5))
axis([-9 8 -1.1 1.1])
xlabel('n')
ylabel('x[n]')
title('Sinal Periódico Discreto')
grid
figure
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

64
P á g i n a | 65

% Gera as figuras dos sinais aperiódicos


%----------------------------------------------------
% Sinal aperiódico contínuo: sinal aleatório
t = 0:.01:1;
a = length(t);
x = rand(1, a);
plot(t, x)
xlabel('t')
ylabel('x(t)')
title('Sinal Aperiódico Contínuo')
grid
figure
% Sinal aperiódico discreto: sinal aleatório
n = -10:10;
a = length(n);
x = rand(1, a);
stem(n, x)
x = rand(1, a);
stem(n, x)
xlabel('n')
title('Sinal Aperiódico Discreto')
ylabel('x[n]')
grid
%----------------------------------------------------

2.4.4.11 Construir a função periódica com a introdução de números de harmónicas


(1)

%----------------------------------------------------
% Gera Função Periódica
%----------------------------------------------------
close all
clc
clf
% Construir a função periódica

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

65
P á g i n a | 66

t=-12:0.01:12;
for m=1:3
subplot(3,1,m)
N=input('introduzir o numero de harmonicas: ');
hold on
x=(2*square(2*pi/6*t,100/3)-
2).*square(2*pi/4*t,50)+(2*square(2*pi/6*t,100/3)+2)/2;
y=ones(1,length(t));
for k=1:length(t)
y(k)=2/3;
for n=1:N
an=(8*sin((4*pi*n)/3) - 2*sin((2*pi*n)/3) -
4*sin(2*pi*n))/(pi*n);
bn=-(4*sin((pi*n)/3)^2*(4*cos((4*pi*n)/3) -
1))/(pi*n);
y(k)=y(k)+an*cos(n*pi/3*t(k))+bn*sin(n*pi/3*t(k));
end
end
plot(t,x,'b.-','color','r')
plot(t,y,'b.-','color','k')
title(['Representacao do sinal periodico para '
num2str(N) '
Harmonicas'],'fontweight','bold','color','b')
line([-20 0 0 0 0 20],[0 0 20 -20 0
0],'linewidth',1.5,'color','r')
set(gca,'xtick',-12:1:12)
axis([-12 12 -8 8])
grid on
end

2.4.4.12 Construir a função periódica com a introdução de números de harm ónicas


(2)

%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

66
P á g i n a | 67

% Gera Função Periódica


%----------------------------------------------------
close all
clc
clf
% Construir a função periódica
for m=1:3
subplot(3,1,m)
N=input('introduzir o numero de harmonicas: ');
t=-N:1:N;
hold on
cn=ones(1,length(t));
for n=-N:N
an=(8*sin((4*pi*n)/3) - 2*sin((2*pi*n)/3) -
4*sin(2*pi*n))/(pi*n);
bn=-(4*sin((pi*n)/3)^2*(4*cos((4*pi*n)/3) - 1))/(pi*n);
cn(n+N+1)=(an^2+bn^2)^(1/2)/2;
end
cn(N+1)=2/3;
cn=cn
stem(t,cn,'b.-','color','k')
title(['Representacao do sinal periodico para '
num2str(N) '
Harmonicas'],'fontweight','bold','color','b')
line([-20 0 0 0 0 20],[0 0 20 -20 0
0],'linewidth',1.5,'color','r')
set(gca,'xtick',-N:2:N)
axis([-N N -0.2 3])
grid on
end

2.4.5 Actividade (A5) – Sinais de energia e sinais de potência

2.4.5.1 Energia de um sinal

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

67
P á g i n a | 68

(i.) Cálculo da energia de um sinal continuo

Recorra ao Matlab para resolver a energia do sinal contínuo definido pela expressaoa
seguinte

𝑡2, 𝑥 <0
𝑥(𝑡) = {
0, 𝑡 ∉ ⌈0,4⌉

Tratando-se de um sinal contínuo, podemos convenientemente recorrer à Symbolic


Math Toolbox
>> syms t;
x=t.^2;
E=int(x.^2,0,4)

(ii.) Calculo da energia de um sinal discreto

Calcule a energia do sinal discreto x[n] definido por

0, 𝑛 < −4
𝑥 (𝑛) = {𝑛 + 2, −4 ≤ 𝑛 < 3
0, 3>𝑛
Tratando-se de um sinal discreto temos facilmente
>> n=-4:2;
x=n+2;
E=sum(x.^2)

(iii.) Código matlab para encontrar energia de um sinal

n=0:1:50;
x=(1/2).^n; stem(n,x);
xlabel('n');
ylabel('x(n)');
title(' sinal x(n)');
axis([0 25 0 1]);
disp(' A energia do sinal calculada E é');
E=sum(abs(x).^2)
disp(' A energia do sinal teórica é');

Saida: A Energia do sinal calculado E è : _____________

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

68
P á g i n a | 69

2.4.5.2 Potência de um sinal

(i.) Cálculo da potência do sinal continuo

Calcule a potência do sinal contínuo definido por x(t) = 4 cos(10πt)


Recorrendo à Symbolic Math Toolbox
>> t0=1/5;
syms t;
x=4*cos(10*pi*t);
P=(1/t0)*int(x.^2,-t0/2,t0/2)

(ii.) Cálculo da potência do sinal discreto

Calcule a potência dos sinais discretos x1[n] e x 2[n] definidos por x1(n) = cos [n π/3]
e x2(n) = cos [n π/5]
Tratando-se de sinais discretos temos facilmente
>> N=6;
n=0:N-1;
x=cos(2*pi*n/N);
P=(1/N)*sum(x.^2)
>> N=10;
n=0:N-1;
x=cos(2*pi*n/N);
P=(1/N)*sum(x.^2)

(iii.) Código matlab para encontrar a potência do sinal

N=input('digite um valor para N: ');


t=-N:0.001:N;
x=cos(2*pi*50*t).^2;
disp('a potência do sinal calculado P é');
P=sum(abs(x).^2)/length(x)
plot(t,x);
xlabel('eixo do tempo--->> n');
ylabel('x(n)');
title(' sinal x(n)');
axis([0 0.1 0 1]);

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

69
P á g i n a | 70

disp('a potência do sinal teorico é');


Entrada: digite um valor para N: 10

Saida: A potência do sinal calculado P è : _____________

2.4.6 Actividade (A6) – Transformações lineares da variável independente

2.4.6.1 Translação no Tempo (1)

%----------------------------------------------------
% Translação no Tempo
%----------------------------------------------------
hold on
t=-4:0.001:10;
ncolor=4;
k=rand(ncolor,3);
y=sinc(t);
subplot(2,2,1);
plot(t,y,'r-','linewidth',1.5)
for i=1:4
x=sinc(t-i);
subplot(2,2,i);
plot(t,x,'color',k(i,:),'linewidth',1.5)
set(gca,'xtick',-4:1:10)
axis([-4 10 -0.5 3.2])
line([-4 0 0 0 10], [0 0 5 0 0],'linewidth',.8,'color','k');
title(['y=sinc(t-' num2str(i)
')'],'fontweight','bold','color','b')
end

2.4.6.2 Translação no Tempo (2)

%----------------------------------------------------
% Translação no Tempo
%----------------------------------------------------
close all

clf
t=-4:0.4:10;
t1=-4:0.001:10;

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

70
P á g i n a | 71

ncolor=4;
k=rand(ncolor,3);
subplot(2,2,1);
y1=2*sinc(t1)
hold on
plot(t1,y1,'r.-','linewidth',1.5)
title('titulo')
hold off
for i=1:4
hold on
x=2*sinc(t-i);
subplot(2,2,i);
stem(t,x,'color',k(i,:),'linewidth',0.2)
set(gca,'xtick',-4:1:10)
axis([-4 10 -0.5 3.2])
line([-4 0 0 0 10],[0 0 5 0 0],'linewidth',.8,'color','k')
title(['y=sinc(t-' num2str(i)
')'],'fontweight','bold','color','b')
xlabel('Eixo x')%comando para colocar legenda sobre os eixos
ylabel('Eixo y')
end

2.4.6.3 Inversão

%------------------------------------------------------------
% Objetivo: escrever um programa para gerar o sinal x ( -t)

% x (t) = t + 1 (-1 <= t <0)


%= 1 (0 <= t <1)
%= t (1 <= t <2)
%= 2 (2 <= t <3)
%= -t + 5 (3 <= t <5)
%------------------------------------------------------------
t=-2:0.01:6 ;
x1= (t+1).*(t>=-1 & t<0);

x2= 1.*(t>=0 & t<1);

x3= t.*(t>=1 & t<2);

x4= 2.*(t>=2 & t<3);

x5= (-t+5).*(t>=3 & t<=5);

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

71
P á g i n a | 72

x= x1+x2+x3+x4+x5;

t_inverso = -fliplr(t);

x_inverso= fliplr(x);

a= min(min(t),min(t_inverso));

b= max(max(t),max(t_inverso));

subplot(2,1,1);

plot(t,x);

grid;

axis([a b min(x) max(x)+0.5]);

xlabel ('índice de tempo t (seg)');

ylabel ('x(t)');

title ('sinal original');

subplot (2,1,2);

plot(t_inverso,x_inverso);

grid;

axis ([a b min(x) max(x)+0.5]);

xlabel ('índice de tempo t (seg)');

ylabel ('x(-t)');

title ('Sinal do tempo inverso');

2.4.6.4 Compressão e Expansão

(i.) Operações Básicas em Sinais Contínuos:% y(t)=x(t); y(t)=x(t/2)');


y(t)=x(2t)

%----------------------------------------------------
% Gera a figura y(t)=x(t);
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

72
P á g i n a | 73

x = -2.5:0.01:2.5;
a = trimf(x, [-1 0 1]);
plot(x, a)
xlabel('t')
ylabel('x(t)')
title('Sinal x(t)')
grid
figure
%----------------------------------------------------
% Gera figura para x(2t)
%----------------------------------------------------
a = trimf(x, [-1/2 0 1/2]);
plot(x, a)
xlabel('t')
ylabel('y(t)')
title('Sinal y(t) = x(2t)')
grid
figure

%----------------------------------------------------
% Gera figura para x(t/2)
%----------------------------------------------------
a = trimf(x, [-2 0 2]);
plot(x, a)
a = trimf(x, [-2 0 2]);
plot(x, a)
xlabel('t')
ylabel('y(t)')
title('Sinal y(t) = x(t/2)')
grid

%----------------------------------------------------
(ii.) Operações de compressão e expansão no tempo de um sinal, a x=x(t)

%Este programa Representa o efeito de compressão e expan são no


%tempo de um sinal, a x=x(t), a medida que aumentarmos a %
frequência do sinal
close all
clf
clc
t=-1:0.001:10;
ncolor=4;
k=rand(ncolor,3);

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

73
P á g i n a | 74

for i=1:4
hold on
x=1.5*exp(-t*i).*heaviside(t*i)+(3-1.5*exp(-
t*i)).*heaviside(t*i-2)-3*heaviside(t*i-5);
x1=0.5*sin(90*t)+x;
subplot(2,2,i);
plot(t,x1,'color',k(i,:),'linewidth',1.4)
set(gca,'xtick',-2:1:10)
axis([-2 10 -0.2 3.2])
line([-3 0 0 0 10],[0 0 5 0 0],'linewidth',.8,'color','k')
grid minor
str1=strcat('Operacoes com sinais','
\y=sinright)(',num2str(i),'x)')
title('\sin\!\left(i\, x\right)','interperter','none')
xlabel('Eixo x')
ylabel('Eixo y')
end

(iii.) Mudança de sinal (avanço)

%----------------------------------------------------
% Objetivo: escrever um programa para gerar o sinal x (t -t0)
% x (t) = t + 1 (-1 <= t <0)
%= 1 (0 <= t <1)
%= t (1 <= t <2)
%= 2 (2 <= t <3)
%= -t + 5 (3 <= t <5)
%----------------------------------------------------
t=-2:0.01:6 ;
x1= (t+1).*(t>=-1 & t<0);
x2= 1.*(t>=0 & t<1);
x3= t.*(t>=1 & t<2);
x4= 2.*(t>=2 & t<3);
x5= (-t+5).*(t>=3 & t<=5);
x= x1+x2+x3+x4+x5;
disp('o programa solicitará a quantidade de deslocamento');
disp('insira (+) para atraso e nº (-)para avanço:');
t0= input('insira a quantidade de deslocamento do sinal: ');

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

74
P á g i n a | 75

t_shift = t+t0;
x_shift = x;
a= min(min(t),min(t_shift));
b= max(max(t),max(t_shift));
subplot(2,1,1);
plot(t,x);
grid;
axis([a b min(x) max(x)+0.5]);
xlabel('indice de tempo t (seg)');
ylabel('x(t)');
title('sinal original');
subplot(2,1,2);
plot(t_shift,x_shift);
grid;
axis([a b min(x) max(x)+0.5]);
xlabel('índice de tempo t (seg)');
ylabel('x(t-t0)');
title('Sinal de mudança de tempo');
Entrada: o programa solicitará a quantidade de deslocamento.
insira um número + para atraso e número - para avanço
insira a quantidade desejada de deslocamento do sinal 5

(iv.) Manipulação do sinal x=x(t)

%----------------------------------------------------
% Manipulação do sinal x=x(t)
%----------------------------------------------------
close all
clc
clf
syms color
t=-1:0.001:14;
color=4
k=rand(color,3)
figure
title('titulo')
for i=1:4
if i==3
subplot(2,2,i)
x=2*exp(-t/2).*heaviside(t/2)+(4-2*exp(-
t/2)).*heaviside(t/2-2)-4*heaviside(t/2-5);
plot(t,x,'color',k(i,:),'linewidth',1.7)
title(['Manipulacao do sinal
x=x(t/2)'],'fontsize',10,'FontAngle','italic')
xlabel('Eixo t','fontsize',8,'FontAngle','italic')
ylabel('Eixo x','fontsize',8,'FontAngle','italic')
set(gca,'xtick',-12:1:12)
axis([-2 14 -0.5 5])
grid on

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

75
P á g i n a | 76

else
subplot(2,2,i)
x=2*exp(-t*i).*heaviside(t*i)+(4-2*exp(-
t*i)).*heaviside(t*i-2)-4*heaviside(t*i-5);
plot(t,x,'color',k(i,:),'linewidth',1.7)
title(['Manipulacao do sinal x=x(' num2str(i)
't)'],'fontsize',10,'FontAngle','italic')
xlabel('Eixo t','fontsize',8,'FontAngle','italic')
ylabel('Eixo x','fontsize',8,'FontAngle','italic')
set(gca,'xtick',-12:1:12)
axis([-2 14 -0.5 5])
grid on
end
end
(v.) Operações Básicas em Sinais Discretos sinal x[n]; sinal y[n] = x[2n]')

%----------------------------------------------------
% Gera a figura do sinal x[n]
%----------------------------------------------------
%
n = -6:6;
x = [1 0.5 1 0.5 1 0.5 1 0.5 1 0.5 1 0.5 1];
stem(n, x)
axis([-7 7 0 1.1])
xlabel('n')
ylabel('x[n]')
title('Sinal x[n]')
grid
figure
%----------------------------------------------------
% Gera a figura do sinal y[n] = x[2n]')
%----------------------------------------------------
n = -3:3;
x = ones(1, 7);
stem(n, x)
axis([-4 4 0 1.1])
xlabel('n')
ylabel('y[n]')
title('Sinal y[n] = x[2n]')
grid

%----------------------------------------------------
(vi.) Função discreta operação efeito de compressão e expansão (1)

%----------------------------------------------------
% Função discreta operação efeito de
% compressão e expansão Sinais
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

76
P á g i n a | 77

close all
clf
t=-4:0.4:10;
t1=-4:0.001:10;
ncolor=4;
k=rand(ncolor,3);
subplot(2,2,1);
y1=2*sinc(t1)
hold on
plot(t1,y1,'r.-','linewidth',1.5)
title('titulo')
hold off
for i=1:4
hold on
x=2*sinc(t-i);
subplot(2,2,i);
stem(t,x,'color',k(i,:),'linewidth',0.2)
set(gca,'xtick',-4:1:10)
axis([-4 10 -0.5 3.2])
line([-4 0 0 0 10],[0 0 5 0 0],'linewidth',.8,'color','k')
title(['y=sinc(t-' num2str(i)
')'],'fontweight','bold','color','b')
xlabel('Eixo x')%comando para colocar legenda sobre os eixos
ylabel('Eixo y')
end

(vii.) Função discreta operação efeito de compressão e expansão (2)

%----------------------------------------------------
% Função discreta operação efeito de
% compressão e expansão Sinais
%----------------------------------------------------
close all
clf
clear all
n=-20:1:20;
t=-20:0.001:20;
for i=1:4
subplot(2,2,i);% Grafico de indice i
hold on
if i==1
y=sinc(n/4);
x=sinc(t/4);
str=strcat('operacao ',['y=sinc(n/4)'])

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

77
P á g i n a | 78

title(str,'fontsize',10,'FontAngle','italic')
elseif i==2
y=sinc(2*n/4);
x=sinc(2*t/4);
str=strcat('operacao ',['y=sinc(n/2)'])
title(str,'fontsize',10,'FontAngle','italic')
elseif i==3
y=1-sinc(n/8)
x=1-sinc(t/8);
str=strcat('operacao ',['y=1-sinc(n/8)'])
title(str,'fontsize',10,'FontAngle','italic')
else
y=sinc(n/4-2);
x=sinc(t/4-2);
str=strcat('operacao ',['y=sinc(n/4-2)'])
title(str,'fontsize',10,'FontAngle','italic')
end
plot(t,x,'color','g','linewidth',1.8)
stem(n,y,'filled','color','b','linewidth',1.2)
set(gca,'xtick',-20:2:20)
axis([-18 18 -0.5 1.4])
line([-18 0 0 0 0 18],[0 0 5 -2 0
0],'linewidth',.8,'color','r')
grid
xlabel('Eixo x','FontAngle','italic')
ylabel('Eixo y','FontAngle','italic')
hold off
end

NB: A função linspace é uma forma prática de se gerar vectores quando sabemos
quantos pontos ele deve ter.

2.4.7 Actividade (A7) – Sinais contínuos e sinais Discretos básicos

2.4.7.1 Sinal Impulso Unitário (Delta de Dirac)

(i.) Sinal Impulso Unitário de tempo contínuo (Delta de Dirac)

%----------------------------------------------------
% Objetivo: Escreva um programa para gerar
% sinal de impulso unitário
%----------------------------------------------------
t = -5: 0.01: 5;

x1 = 1. * (t == 0);

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

78
P á g i n a | 79

x2= 1.*(t==0);

x = x1 + x2;

figure(1)

plot (t, x);

axis([min(t) max(t) min(x)-0.5 max(x)+0.5]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('amplitude x (t)');

title ('sinal de Impluso Unitário');

%----------------------------------------------------

(ii.) Sinal de Degrau Unitário de tempo contínuo

%----------------------------------------------------
% Experimento: Degrau unitário:
%----------------------------------------------------
fs = 10;

ts = [0:1/fs:5 5:1/fs:10];

x = [zeros(1,51) ones(1,51)];

stairs(ts,x)

axis([min(ts) max(ts) min(x)-0.5 max(x)+0.5]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal de Degrau Unitário');

(iii.) Sinal de escalão unitário de tempo continuo

%----------------------------------------------------
% Objetivo: escrever um programa para gerar Escalão unitário
%----------------------------------------------------
t = -5: 0.01: 5;

x1= 1.*(t>=0);

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

79
P á g i n a | 80

x2 = 0. * (t <0);

x = x1 + x2;

figure(1)

plot (t, x);

axis([min(t) max(t) min(x)-0.5 max(x)+0.5]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('amplitude x (t)');

title('sinal de escalão unitário');

%----------------------------------------------------

(iv.) Sinal Impulso Unitário de tempo discreto (Step):

%----------------------------------------------------
% % Degrau Unitário (step):
%----------------------------------------------------
y = ones(1,11);

stem(y)

axis([-1 12 0 1.1])

xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal de Degaru Unitário');

(v.) Sinal Impulso Unitáriode tempo discreto (1)

%----------------------------------------------------
% Impulso unitário:
%----------------------------------------------------
ts = 0:0.5:5;

x = [1 zeros(1,length(ts)-1)];

stem(ts,x)

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

80
P á g i n a | 81

axis([-1 6 0 1.2])

xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal de Impluso Unitário');

(vi.) Sinal Impluso Unitário de tempo discreto (2)

%----------------------------------------------------
% Impulso Unitário:
%----------------------------------------------------
y = [1 zeros(1,10)];

stem(y)

axis([-1 12 0 1.2])

xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal de Impluso Unitário');

2.4.7.2 Sinais de Rampa

(i.) Sinal de rampa com largura W

%----------------------------------------------------
% Impulso com largura w:
%----------------------------------------------------
fs = 10; w = 0.1;

ts = [-1:1/fs:-w 0 w:1/fs:1];

x = [zeros(1,10) 1 zeros(1,10)];

plot(ts,x)

axis([min(ts) max(ts) min(x)-0.5 max(x)+0.5]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal com largura w');

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

81
P á g i n a | 82

%----------------------------------------------------

(ii.) Sinal de rampa de tempo contínuo

%----------------------------------------------------
% Rampa: y = 2*t;
%----------------------------------------------------
y = 2*t;

plot(y);

xlabel ('Índice de tempo t (seg.)');

ylabel ('amplitude x (t)');

title('Sinal de Rampa');

(iii.) Sinal de rampa unitária de tempo continuo

%----------------------------------------------------
% Objectivo: escrever um programa para gerar rampa unitaria
%----------------------------------------------------
t=-5:0.01:5 ;

x1= t.*(t>=0);

x2= 0.*(t<0);

x= x1+x2;

figure(1)

plot(t,x);

axis([min(t) max(t) min(x)-0.5 max(x)+0.5]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('amplitude x (t)');

title('sinal Rampa unitaria');

%---------------------------------------------------

2.4.7.3 Sinais senoidais

%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

82
P á g i n a | 83

% Senoides:
%----------------------------------------------------
% Parâmetros de senoides:
% Amplitude, A
% Frequência, f
% Fase, φ
% Deslocamento Vertical (polarização, offset), B
% A forma geral de uma senoide é: y = A.sen(2πft + φ) + B
% Exemplo: gerar uma senoide com as seguintes
% especificações: A = 5; f = 2 Hz; φ = π/8 rad.
t = linspace(0,1,1001);

Ampl = 5;

freq = 2;

fase = pi/8;

senoide = Ampl * sin(2*pi*freq*t + fase);

plot(t, senoide)

%----------------------------------------------------

2.4.7.4 Geração de onda senoidal

%----------------------------------------------------
% Objetivo: escrever um programa para gerar onda sin com
% frequência "F = 300Hz "

%----------------------------------------------------

F = input('insira a frequência da onda sin:');

T= 1/F ;

t=0:3*T/100:3*T ;

y= sin(2*pi*F*t);

figure(1)

subplot(2,1,1)

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

83
P á g i n a | 84

plot(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('amplitude x (t)');

title('sinal da onda sin');

subplot(2,1,2)

stem(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel ('Índice de tempo n (seg.)');

ylabel ('amplitude x (n)');

title('sequência de onda sinusoidal');

%----------------------------------------------------
Entrada: insira a frequência da onda sin: 300Hz

2.4.7.5 Geração de onda Sinc

%----------------------------------------------------
% Objectivo: escrever um programa para gerar a onda Sinc(t)
%----------------------------------------------------
t=-5:0.1:5 ;

y= sinc(t);

figure(1)

subplot(2,1,1)

plot(t,y)

axis([min(t) max(t) min(y)-0.5 max(y)+0.5]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('amplitude x (t)');

title('sinal Sinc');

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

84
P á g i n a | 85

subplot(2,1,2)

stem(t,y);

axis([min(t) max(t) min(y)-0.5 max(y)+0.5]);

xlabel ('Índice de tempo n (seg.)');

ylabel ('amplitude x (n)');

title('sequência Sinc');

%----------------------------------------------------

2.4.7.6 Sinais de ondas Quadrados e Triangulares

(i.) Sinal de onda Quadradas

% Formas de onda quadradas devem ter especificado o ciclo de %


trabalho (o percentual de tempo em que a amplitude do
% sinal fica em nível alto – duty cycle).
%----------------------------------------------------
% Duty cycle de 50% (padrão do Matlab) e frequência de 4 Hz.
%----------------------------------------------------
t = linspace(0,1,1001);

squad1 = square(2*pi*4*t);

plot(t,squad1)

axis([-0.1 1.1 -1.1 1.1])

%----------------------------------------------------
% Duty cycle de 75% e frequência de 4 Hz.
%----------------------------------------------------
figure

t = linspace(0,1,1001);

squad2 = square(2*pi*4*t,75);

plot(t,squad2)

axis([-0.1 1.1 -1.1 1.1])

%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

85
P á g i n a | 86

(ii.) Geração de Onda Quadrada

%----------------------------------------------------
% Objectivo: escrever um programa para gerar ondas quadradas
% com frequência F = 10 Hz"
%----------------------------------------------------
F = input(' insira a frequência da onda quadrada: ');

T = 1 / F;

t = 0: 3 * T / 100: 3 * T;

y= square(2*pi*F*t);

figure(1)

subplot(2,1,1)

plot(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel('Time Index t(sec.)');

ylabel('amplitude x(t)');

title('sinal de onda quadrada');

subplot(2,1,2)

stem(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel ('Índice de tempo n (seg.)');

ylabel ('amplitude x (n)');

title('sequência de onda quadrada');

%----------------------------------------------------
Entrada:Insira a frequência da onda quadrada: 10Hz

(iii.) Geração de onda Dente de Serra

%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

86
P á g i n a | 87

% Objetivo: escrever um programa para gerar uma onda dente de


serra com % % frequência "F = 2k Hz"
%----------------------------------------------------
F = input ('Insira a frequência da onda dente de serra:');

T = 1 / F;

t = 0: 3 * T / 100: 3 * T;

y= sawtooth(2*pi*F*t);

figure(1)

subplot(2,1,1)

plot(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('Amplitude x (t)');

title('sinal de onda dente de serra');

subplot(2,1,2)

stem(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel ('Índice de tempo n (seg.)');

ylabel ('Amplitude x (n)');

title('sequência de onda dente de serra');

%----------------------------------------------------
Entrada: insira a frequência da onda dente de serra: 2000 Hz

(iv.) Sinais Dente-de-serra:

% Assim como as ondas quadradas, esses sinais precisam de um %


parâmetro que indica a localização do pico da onda.
%----------------------------------------------------
%Pico no final do período (padrão do Matlab) e
% frequência de 3Hz.

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

87
P á g i n a | 88

%----------------------------------------------------
t=linspace(0,1,1001);

ds1=sawtooth(2*pi*3*t);

plot(t,ds1)

%----------------------------------------------------
% Pico na metade do período e frequência de 3 Hz.
%----------------------------------------------------
figure

t = linspace(0,1,1001);

ds2 = sawtooth(2*pi*3*t,1/2);

plot(t,ds2)

%----------------------------------------------------

(v.) Geração de Onda Triangular

%----------------------------------------------------
% Objetivo: escrever um programa para gerar uma onda
% Triangular com frequência "F = 1 MHz "
%----------------------------------------------------
F = input('insira a frequência da onda triangular :');

T= 1/F ;

t=0:3*T/100:3*T ;

y= sawtooth(2*pi*F*t, 0.5);

figure(1)

subplot(2,1,1)

plot(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel ('Índice de tempo t (seg.)');

ylabel ('amplitude x (t)');

title('Sinal de onda triangular');

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

88
P á g i n a | 89

subplot(2,1,2)

stem(t,y);

axis([min(t) max(t) min(y)-1 max(y)+1]);

xlabel ('Índice de tempo n (seg.)');

ylabel ('amplitude x (n)');

title('Sequência de onda triangular');

Entrada: insira a frequência da onda triangular: 10000 Hz

2.4.7.7 Sinais Complexos:

%----------------------------------------------------
% Sinais Complexos: sinais periódicos podem ser
% representados por exponenciais complexas:
%----------------------------------------------------
f = 0.1;
t = 0:0.05:10;
x = exp(2*pi*j*f*t);
plot(t,real(x),t,imag(x),'r');
grid
title('\bfExponencial Complexa'); xlabel('\itt \rm(s)');
ylabel('Amplitude');
legend('Parte Real','Parte Imaginária'); axis([0 10 -1.1
1.1])
%----------------------------------------------------

2.4.8 Actividade (A8) – Sinais Exponencias Reais Contínuos Crescente e


Decrescente

2.4.8.1 Sinais Exponencias Reais Contínuos Crescente

%----------------------------------------------------
% Sinais Exponencias Reais Contínuos Crescente e
% Decrescente
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

89
P á g i n a | 90

% Gera sinal exponencial real contínuo crescente

t = -2:0.1:2;
C = 1;
Alfa = 1;
x = C*exp(Alfa*t);
plot(t, x)
xlabel('t')
ylabel('x(t)')
title('Exponencial Crescente - Alfa = 1 e C = 1')
grid
figure
%----------------------------------------------------

2.4.8.2 Sinais Exponencias Reais Contínuos Decrescente

%----------------------------------------------------
% Gera sinal exponencial real contínuo decrescente
%----------------------------------------------------
% Atenção para o valor de alfa
Alfa = -1;
x = C*exp(Alfa*t);
plot(t, x)
xlabel('t')
ylabel('x(t)')
title('Exponencial Decrescente - Alfa = -1 e C = 1')
grid
%----------------------------------------------------
Nota: Calcula agora para alfa=1

2.4.8.3 Sinais Exponencias Reais contínuos Crescente e Decrescente

%----------------------------------------------------
% Gera as figuras dos Sinais Exponencias Reais
% Contínuos Crescente e Decrescente

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

90
P á g i n a | 91

%----------------------------------------------------
% Gera sinal exponencial real contínuo crescente
t = -2:0.1:2;
C = 1;
Alfa = 1;
x = C*exp(Alfa*t);
plot(t, x)
xlabel('t')
ylabel('x(t)')
title('Exponencial Crescente - Alfa = 1 e C = 1')
grid
figure
%----------------------------------------------------
% Gera sinal exponencial real contínuo decrescente
%----------------------------------------------------
% Atenção para o valor de alfa
Alfa = -1;
x = C*exp(Alfa*t);
plot(t, x)
xlabel('t')
ylabel('x(t)')
title('Exponencial Decrescente - Alfa = -1 e C = 1')
grid
%----------------------------------------------------

2.4.8.4 Sinal Exponencial Complexo Contínuos

%----------------------------------------------------
% Gera o sinal exponencial complexo contínuo e
% apresenta em 3d e 2d
%----------------------------------------------------
fs = 500;
t = -10:1/fs:30;
Alfa = j;

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

91
P á g i n a | 92

C = 1;
y = C*exp(Alfa*t);
h = plot3(t, imag(y), real(y), 'b');
hold on;
%----------------------------------------------------
% Plotando partes real e imaginária juntamente da figura 3d
%----------------------------------------------------
h = plot3(t, ones(size(t)), real(y), 'r');
h = plot3(t, imag(y), -ones(size(t)), 'g');
grid on;
xlabel('Tempo (s)')
ylabel('Parte Imaginária')
zlabel('Parte Real')
title('Complexo - Azul Real - Vermelho Imaginário -
Verde')
view(27.5, 22)
%----------------------------------------------------
% Plotando em 2d as partes real e imaginária separadamente
% ----------------------------------------------------
figure
subplot(211)
plot(t, real(y), 'r')
xlabel('t')
ylabel('Parte Real')
grid
subplot(212)
plot(t, imag(y), 'g')
xlabel('t')
ylabel('Parte Imaginária')
grid
%----------------------------------------------------
% Gera o sinal exponencial complexo contínuo crescente
% e apresenta em 3d
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

92
P á g i n a | 93

fs = 500;
t = -10:1/fs:30;
Alfa = 0.05 + 2*j;
C = 1;
y = C*exp(Alfa*t);
h = plot3(t, imag(y), real(y), 'b');
hold on;
%----------------------------------------------------
% Plotando partes real e imaginária juntamente da figura 3d
%----------------------------------------------------
h = plot3(t, ones(size(t)), real(y), 'r');
h = plot3(t, imag(y), -ones(size(t)), 'g');
grid on;
xlabel('Tempo (s)')
ylabel('Parte Imaginária')
zlabel('Parte Real')
title('Complexo - Azul Real - Vermelho Imaginário -
Verde')
view(27.5, 22)
%----------------------------------------------------
% Plotando em 2d as partes real e imaginária separadamente
%----------------------------------------------------
figure
subplot(211)
plot(t, real(y), 'r')
xlabel('t')
ylabel('Parte Real')
grid
subplot(212)
plot(t, imag(y), 'g')
xlabel('t')
ylabel('Parte Imaginária')
grid
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

93
P á g i n a | 94

2.4.8.5 Sinais Exponencias Reais Discretos Crescente e Decrescente

%----------------------------------------------------
% Gera sinal exponencial real contínuo crescente
%----------------------------------------------------
C = 1;
Alfa = 0.85;
n = -10:10;
x = C*Alfa.^n;
stem(n, x)
xlabel('n')
ylabel('x[n]')
title('Exponencial Descrescente - C = 1 e Alfa = 0.85')
grid
figure
%----------------------------------------------------
% Gera sinal exponencial real discreto decrescente
%----------------------------------------------------
Alfa = 1.2;
x = C*Alfa.^n;
stem(n, x)
xlabel('n')
ylabel('x[n]')
title('Exponencial Crescente - C = 1 e Alfa = 1.2')
grid
figure
%----------------------------------------------------
% Gera sinal exponencial real contínuo alternado crescente
%----------------------------------------------------
Alfa = -1.2;
x = C*Alfa.^n;
stem(n, x)

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

94
P á g i n a | 95

xlabel('n')
ylabel('x[n]')
title('Exponencial Crescente Alternada - C = 1 e Alfa = -
1.2')
grid
figure
% ----------------------------------------------------
% Gera sinal exponencial real contínuo alternado decrescente
%----------------------------------------------------
Alfa = -0.85;
x = C*Alfa.^n;
stem(n, x)
xlabel('n')
ylabel('x[n]')
title('Exponencial Decrescente Alternada - C = 1 e Alfa = -
0.85')
grid
%----------------------------------------------------

MANUAL DE LABORATÓRIO DE CIRCUITOS ELÉCTRICOS ISPTEC

95

Você também pode gostar