Dominando Operadores MATLAB: Guia Completo de Operações Aritméticas, Lógicas e Bitwise
Operador é símbolo que instrui o compilador a realizar manipulações matemáticas ou lógicas específicas. O MATLAB opera principalmente em matrizes e arrays inteiros, então operadores funcionam tanto em dados escalares quanto não escalares. Tipos de operações elementares:
- Operadores Aritméticos
- Operadores Relacionais
- Operadores Lógicos
- Operações Bitwise
- Operações de Conjunto
Operadores Aritméticos
Dois tipos de operações aritméticas:
- Operações aritméticas de matriz (álgebra linear).
- Operações aritméticas de array (elemento a elemento).
Operadores de matriz e array diferem pelo símbolo ponto .. Adição e subtração são iguais para ambos. Tabela resumo:
| Nº | Operador e Descrição | |
|---|---|---|
| 1 | + Adição ou unário plus. A+B soma valores. A e B devem ter mesmo tamanho, a menos que um seja escalar. Escalar pode ser adicionado a matriz de qualquer tamanho. | |
| 2 | - Subtração ou unário minus. A-B subtrai B de A. Mesma regra de tamanho. | |
| 3 | * Multiplicação de matriz. C = A*B é produto algébrico linear. Para A e B não escalares, colunas de A = linhas de B. Escalar multiplica matriz de qualquer tamanho. | |
| 4 | .* Multiplicação de array (elemento a elemento). A.*B. A e B mesmo tamanho, a menos que um seja escalar. | |
| 5 | / | Divisão à direita de matriz (slash). B/A ≈ B*inv(A). Precisamente B/A = (A'\B')'. |
| 6 | ./ | Divisão à direita de array. A./B com elementos A(i,j)/B(i,j). Mesma regra de tamanho. |
| 7 | \ | Divisão à esquerda de matriz (backslash). Se A quadrada, A\B ≈ inv(A)*B. Se A n×n e B vetor coluna n, X = A\B resolve AX = B. Aviso se A mal condicionada. |
| 8 | .\ | Divisão à esquerda de array. A.\B com elementos B(i,j)/A(i,j). Mesma regra de tamanho. |
| 9 | ^ | Potência de matriz. X^p = X elevado a p (p escalar). Se p inteiro, potência por quadrados repetidos. Se negativo, inverte primeiro. Para outros p, usa autovalores/autovetores. |
| 10 | .^ | Potência de array. A.^B com elementos A(i,j)^B(i,j). Mesma regra de tamanho. |
| 11 | ' | Transposta de matriz (conjugada para complexos). |
| 12 | .' | Transposta de array (sem conjugação para complexos). |
Operadores Relacionais
Funcionam em escalares e não escalares. Para arrays, comparam elemento a elemento, retornando array lógico do mesmo tamanho (1=true, 0=false).
| Nº | Operador e Descrição |
|---|---|
| 1 | < Menor que |
| 2 | <= Menor ou igual |
| 3 | > Maior que |
| 4 | >= Maior ou igual |
| 5 | == Igual a |
| 6 | ~= Diferente de |
Operadores Lógicos
Dois tipos:
Elemento a elemento — operam em elementos correspondentes de arrays lógicos. Símbolos
&,|,~para AND, OR, NOT.Curto-circuito — operam em expressões lógicas escalares. Símbolos
&&e||para AND e OR.
Operações Bitwise
Operadores bitwise trabalham bit a bit. Tabelas verdade para &, |, ^:
| p | q | p & q | p | q | p ^ q |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 0 |
| 1 | 0 | 0 | 1 | 1 |
Exemplo: A = 60 (0011 1100), B = 13 (0000 1101):
A&B = 0000 1100 A|B = 0011 1101 A^B = 0011 0001 ~A = 1100 0011
Funções bitwise comuns:
| Função | Finalidade |
|---|---|
| bitand(a, b) | AND bitwise de inteiros a e b |
| bitcmp(a) | Complemento bitwise de a |
| bitget(a,pos) | Obtém bit na posição pos no array inteiro a |
| bitor(a, b) | OR bitwise de a e b |
| bitset(a, pos) | Define bit na posição pos de a |
| bitshift(a, k) | Retorna a deslocado à esquerda por k bits (equivale a multiplicar por 2^k). k negativo desloca à direita (divide por 2^|k|) arredondando para -inf. Bits de overflow são truncados. |
| bitxor(a, b) | XOR bitwise de a e b |
| swapbytes | Inverte ordem de bytes |
Operações de Conjunto
Funções para união, interseção, teste de pertinência, etc.
| Nº | Função e Descrição |
|---|---|
| 1 | intersect(A,B) Interseção de dois arrays; valores comuns a ambos, ordenados. |
| 2 | intersect(A,B,'rows') Trata cada linha como entidade única; retorna linhas comuns, ordenadas. |
| 3 | ismember(A,B) Array do tamanho de A com 1 onde elementos de A estão em B, 0 caso contrário. |
| 4 | ismember(A,B,'rows') Trata linhas como entidades; vetor com 1 onde linhas de A estão em B. |
| 5 | issorted(A) Retorna 1 (true) se elementos de A em ordem crescente; 0 caso contrário. A pode ser vetor ou cell array de strings 1xN ou Nx1. |
| 6 | issorted(A, 'rows') Retorna 1 se linhas de matriz 2D A ordenadas; 0 caso contrário. |
| 7 | setdiff(A,B) Diferença de conjuntos; valores em A não em B, ordenados. |
| 8 | setdiff(A,B,'rows') Linhas de A não em B, ordenadas. Opção 'rows' não suporta cell arrays. |
| 9 | setxor OU exclusivo de conjuntos. |
| 10 | union União de conjuntos. |
| 11 | unique Valores únicos em array. |
MATLAB
- Operadores em C# – Guia Completo dos Operadores em C#
- Dominando Operadores em C++: Guia Completo com Exemplos Práticos
- Dominando Operadores em Programação C: Um Guia Abrangente
- Dominando Operadores em Python: Guia Completo
- Dominando Operadores Java: Tipos, Sintaxe e Exemplos Práticos
- Guia Abrangente de Operadores em C: Tipos, Funções e Exemplos
- MATLAB: Visão Geral Abrangente do Ambiente Líder em Computação Numérica
- Entendendo Variáveis no MATLAB: Fundamentos e Exemplos
- Comandos Essenciais do MATLAB para Computação Eficiente
- Entendendo Tipos de Dados no MATLAB: Guia Completo