Aprenda MATLAB em 10 Minutos
MATLAB (Matrix Laboratory) e uma linguagem de programacao de alto nivel e um ambiente projetado para computacao numerica, desenvolvimento de algoritmos e visualizacao de dados. Originalmente desenvolvido no final dos anos 1970, o MATLAB se tornou uma ferramenta essencial em engenharia, ciencia e matematica.
Este tutorial cobre os fundamentos do MATLAB e ajuda voce a comecar com este poderoso ambiente de computacao.
1. Seu Primeiro Programa em MATLAB
Crie um arquivo de script chamado hello.m ou digite comandos diretamente na janela de comandos do MATLAB.
disp('Hello, World!')
Ou usando a funcao fprintf:
fprintf('Hello, World!\n')
A saida sera:
Hello, World!
A funcao disp() exibe o conteudo diretamente, enquanto fprintf() oferece mais controle de formatacao, similar ao printf da linguagem C.
2. Sintaxe Basica
O MATLAB tem suas proprias regras de sintaxe que diferem da maioria das linguagens de programacao de proposito geral. Compreender esses conceitos basicos e essencial para escrever codigo limpo e manutenivel.
2.1 Comentarios
Comentarios de linha unica comecam com o sinal de porcentagem %:
% Este e um comentario
x = 10; % Isso atribui 10 a x
Comentarios de multiplas linhas usam %{ e %}:
%{
Este e um comentario de multiplas linhas.
Ele pode span varias linhas.
%}
2.2 Ponto e Virgula
O ponto e virgula ; suprime a exibicao da saida. Sem ele, o MATLAB exibe o resultado:
x = 5 % Exibe: x = 5
y = 10; % Sem saida, mas y e atribuido
2.3 Diferenca entre Maiusculas e Minusculas
O MATLAB diferencia maiusculas de minusculas. A e a sao variaveis diferentes:
A = 5;
a = 10;
disp(A) % Saida: 5
disp(a) % Saida: 10
2.4 Nomenclatura de Variaveis
Nomes de variaveis devem comecar com uma letra, seguidos de letras, numeros ou underscores:
valid_name = 1;
another_valid_name_123 = 2;
% 123invalid = 3; % Erro: nao pode comecar com numero
2.5 Operacoes Basicas
O MATLAB e ottimo para operacoes com matrizes. Criar uma matriz e simples:
A = [1 2 3; 4 5 6; 7 8 9] % matriz 3x3
Saida:
A =
1 2 3
4 5 6
7 8 9
3. Variaveis e Tipos de Dados
O MATLAB usa tipagem dinamica. Variaveis sao criadas quando atribuidas e seu tipo e determinado pelo valor atribuido.
3.1 Tipos Numericos
O MATLAB armazena todos os numeros como ponto flutuante de precisao dupla por padrao:
% Inteiro
int_num = 42;
% Float
float_num = 3.14159;
% Notacao cientifica
sci_num = 2.5e-3; % 0.0025
3.2 Strings
Variaveis de string usam aspas simples:
str = 'Hello, MATLAB';
str2 = "Hello, MATLAB"; % Array de strings (R2016b+)
Concatenacao de strings:
str1 = 'Hello';
str2 = 'World';
combined = [str1 ', ' str2]; % 'Hello, World'
3.3 Logicos (Boolean)
Valores logicos sao true ou false:
flag = true;
result = false;
% Operacoes logicas
a = true;
b = false;
and_result = a && b; % false
or_result = a || b; % true
not_result = ~a; % false
3.4 Arrays de Caracteres vs Strings
O MATLAB possui tanto arrays de caracteres quanto objetos de string:
% Array de caracteres (estilo antigo)
char_arr = 'Hello';
% Objeto de string (estilo moderno, R2016b+)
str_obj = "Hello";
% Objetos de string sao mais faceis de trabalhar
name = "Alice";
greeting = "Hello, " + name; % Funciona naturalmente
4. Estruturas de Dados
O MATLAB oferece varias estruturas de dados para diferentes casos de uso.
4.1 Vetores
Um vetor e um array unidimensional:
% Vetor linha
row_vec = [1 2 3 4 5];
% Vetor coluna
col_vec = [1; 2; 3; 4; 5];
% Usando operador dois pontos
range_vec = 1:5; % [1 2 3 4 5]
step_vec = 0:2:10; % [0 2 4 6 8 10]
% linspace para valores espacados uniformemente
lin_vec = linspace(0, 10, 5); % [0 2.5 5 7.5 10]
4.2 Matrizes
As matrizes sao a base do MATLAB:
% Criacao direta de matriz
A = [1 2 3; 4 5 6; 7 8 9];
% Acessando elementos
element = A(2, 3); % Retorna 6 (linha 2, coluna 3)
% Operacoes com matrizes
B = A'; % Transposta
C = A * B; % Multiplicacao de matrizes
D = A .* B; % Multiplicacao elemento a elemento
4.3 Cell Arrays
Cell arrays podem armazenar diferentes tipos de dados:
% Criar um cell array
cell_arr = {1, 'hello', [1 2 3], true};
% Acessar conteudo do cell usando chaves
data = cell_arr{2}; % Retorna 'hello'
% Acessar cell usando parenteses
sub_cell = cell_arr(1:2); % Retorna {1, 'hello'}
4.4 Estruturas
Estruturas sao como dicionarios com campos nomeados:
% Criar uma estrutura
student.name = 'John';
student.age = 20;
student.major = 'Engineering';
% Acessar campos
disp(student.name); % Saida: John
% Array de estruturas
students(1).name = 'Alice';
students(1).age = 21;
students(2).name = 'Bob';
students(2).age = 22;
4.5 Tabelas
Tabelas sao adequadas para dados tabulares:
% Criar uma tabela
Age = [25; 30; 35];
Name = {'Alice'; 'Bob'; 'Charlie'};
Salary = [50000; 60000; 70000];
T = table(Name, Age, Salary);
% Acessar dados
disp(T.Age);
disp(T.Name{1});
5. Operadores
O MATLAB oferece varios operadores para operacoes aritmeticas, comparacao e logicas.
5.1 Operadores Aritmeticos
a = 10;
b = 3;
sum = a + b; % 13
diff = a - b; % 7
prod = a * b; % 30
quot = a / b; % 3.3333
int_div = floor(a/b); % 3
mod = mod(a, b); % 1 (resto)
pow = a ^ b; % 1000
5.2 Operadores Elemento a Elemento
Operadores elemento a elemento trabalham em elementos correspondentes:
A = [1 2 3];
B = [4 5 6];
C = A .* B; % Elemento a elemento: [4 10 18]
D = A.^2; % Quadrado elemento a elemento: [1 4 9]
5.3 Operadores de Comparacao
x = 5;
y = 10;
eq = (x == y); % false
neq = (x ~= y); % true
gt = (x > y); % false
lt = (x < y); % true
ge = (x >= y); % false
le = (x <= y); % true
5.4 Operadores Logicos
a = true;
b = false;
and_op = a & b; % false (AND elemento a elemento)
or_op = a | b; % true (OR elemento a elemento)
not_op = ~a; % false
and_short = a && b; % false (AND com curto-circuito)
or_short = a || b; % true (OR com curto-circuito)
6. Controle de Fluxo
O MATLAB oferece estruturas padrao de controle de fluxo, mas com sintaxe diferente de linguagens como Python.
6.1 if-elseif-else
score = 85;
if score >= 90
grade = 'A';
elseif score >= 80
grade = 'B';
elseif score >= 70
grade = 'C';
else
grade = 'F';
end
disp(grade) % Saida: B
6.2 switch
A instrucao switch compara uma unica expressao contra multiplos casos:
day = 'Monday';
switch day
case {'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'}
disp('Weekday');
case {'Saturday', 'Sunday'}
disp('Weekend');
otherwise
disp('Invalid day');
end
6.3 for Loops
O loop for iter sobre um intervalo ou array:
% Iterando sobre um intervalo
for i = 1:5
disp(i);
end
% Iterando sobre um array
fruits = {'apple', 'banana', 'orange'};
for fruit = fruits
disp(fruit{1});
end
% Loops aninhados para operacoes com matrizes
A = [1 2; 3 4];
B = zeros(2, 2);
for i = 1:2
for j = 1:2
B(i, j) = A(i, j) * 2;
end
end
6.4 while Loops
count = 0;
while count < 5
disp(count);
count = count + 1;
end
6.5 Controle de Loops
A instrucao break sai do loop, e continue pula para a proxima iteracao:
% Usando break
for i = 1:10
if i == 5
break;
end
disp(i);
end
% Saida: 1 2 3 4
% Usando continue
for i = 1:5
if mod(i, 2) == 0
continue; % Pula numeros pares
end
disp(i);
end
% Saida: 1 3 5
7. Entrada e Saida
7.1 Entrada do Usuario
Use a funcao input() para obter entrada do usuario:
% Obter entrada numerica
num = input('Enter a number: ');
% Obter entrada de string
name = input('Enter your name: ', 's');
% Obter entrada de expressao (avalia a entrada)
expr = input('Enter an expression: ');
7.2 Exibindo Saida
Varias funcoes exibem saida:
% disp - exibicao simples
disp('Hello');
disp([1 2 3]);
% fprintf - saida formatada
name = 'Alice';
age = 25;
fprintf('Name: %s, Age: %d\n', name, age);
% sprintf - criar string formatada
str = sprintf('Value: %.2f', 3.14159);
disp(str);
7.3 Especificadores de Formato
Especificadores de formato comuns no MATLAB:
% %s - string
% %d - inteiro
% %f - ponto flutuante
% %.2f - ponto flutuante com 2 casas decimais
% %e - notacao cientifica
fprintf('%d %.2f %e\n', 42, 3.14159, 1000)
% Saida: 42 3.14 1.000000e+03
8. Funcoes
Funcoes no MATLAB sao tipicamente definidas em arquivos separados, mas funcoes anonimas fornecem criacao de funcoes inline.
8.1 Funcoes Anonimas
Funcoes anonimas criam funcoes simples sem arquivos separados:
% Entrada unica
square = @(x) x^2;
disp(square(5)); % Saida: 25
% Multiplas entradas
add = @(x, y) x + y;
disp(add(3, 4)); % Saida: 7
% Multiplas expressoes
hypot = @(x, y) sqrt(x^2 + y^2);
disp(hypot(3, 4)); % Saida: 5
8.2 Arquivos de Funcao
Crie um arquivo chamado myfunc.m:
function y = myfunc(x)
y = x^2 + 1;
end
Chame a funcao:
result = myfunc(5); % Saida: 26
8.3 Funcoes com Multiplas Saidas
function [sum, prod] = calc(x, y)
sum = x + y;
prod = x * y;
end
Chame com multiplas saidas:
[s, p] = calc(3, 4);
disp(s); % 7
disp(p); % 12
8.4 Argumentos Variaveis
Use varargin e varargout para argumentos variaveis:
function result = sum_all(varargin)
result = 0;
for i = 1:length(varargin)
result = result + varargin{i};
end
end
% Chame com qualquer numero de argumentos
total = sum_all(1, 2, 3, 4, 5); % Saida: 15
9. Arquivos de Script
Scripts sao arquivos .m que contem uma sequencia de comandos MATLAB. Eles operam sobre dados no espaco de trabalho:
% salvar como myscript.m
% Calcular estatisticas para um conjunto de dados
data = [1 2 3 4 5 6 7 8 9 10];
mean_val = mean(data);
std_val = std(data);
max_val = max(data);
min_val = min(data);
fprintf('Mean: %.2f\n', mean_val);
fprintf('Std: %.2f\n', std_val);
fprintf('Max: %d\n', max_val);
fprintf('Min: %d\n', min_val);
10. Tratamento de Erros
Use try-catch para tratamento de erros:
try
result = risky_operation();
catch ME
fprintf('Error: %s\n', ME.message);
% Tratar o erro
result = 0;
end
Usando error() para gerar erros:
function result = divide(a, b)
if b == 0
error('Division by zero is not allowed');
end
result = a / b;
end
11. Operacoes com Arquivos
11.1 Salvando e Carregando Dados
% Salvar variaveis em arquivo
x = [1 2 3];
y = 'hello';
save('data.mat', 'x', 'y');
% Carregar variaveis de arquivo
load('data.mat');
% Salvar em arquivo de texto
writematrix(x, 'data.txt');
% Ler de arquivo de texto
data = readmatrix('data.txt');
11.2 Operacoes com Arquivos de Texto
% Escrever em arquivo de texto
fid = fopen('output.txt', 'w');
fprintf(fid, 'Line 1\n');
fprintf(fid, 'Line 2\n');
fclose(fid);
% Ler de arquivo de texto
fid = fopen('output.txt', 'r');
while ~feof(fid)
line = fgetl(fid);
if ischar(line)
disp(line);
end
end
fclose(fid);
Usando textscan para leitura estruturada:
fid = fopen('data.txt', 'r');
format = '%s %d %f';
C = textscan(fid, format);
fclose(fid);
name = C{1};
age = C{2};
score = C{3};
12. Graficos
As capacidades de graficos do MATLAB estao entre seus recursos mais fortes.
12.1 Grafico 2D Basico
x = 0:0.1:2*pi;
y = sin(x);
plot(x, y);
xlabel('x');
ylabel('sin(x)');
title('Sine Wave');
grid on;
12.2 Multiplos Graficos
x = 0:0.1:2*pi;
% Subplots
subplot(2, 1, 1);
plot(x, sin(x));
title('Sine');
subplot(2, 1, 2);
plot(x, cos(x));
title('Cosine');
12.3 Personalizacao de Graficos
x = 0:0.1:10;
y1 = x;
y2 = x.^2;
plot(x, y1, 'b-', 'LineWidth', 2); % Linha solida azul
hold on;
plot(x, y2, 'r--', 'LineWidth', 2); % Linha tracejada vermelha
hold off;
xlabel('X');
ylabel('Y');
legend('Linear', 'Quadratic');
title('Linear vs Quadratic');
grid on;
12.4 Outros Tipos de Graficos
% Grafico de barras
bar([1 2 3 4], [10 20 15 25]);
% Histograma
data = randn(1000, 1);
histogram(data, 30);
% Grafico de dispersao
x = rand(100, 1);
y = 2*x + randn(100, 1)*0.1;
scatter(x, y);
