MATLAB e GNU Octave
Use esta skill para projetar ou revisar código numérico, migrar versões do MATLAB, preparar projetos reproduzíveis e planejar execução confiável. MATLAB e GNU Octave são produtos distintos: a compatibilidade é parcial, não uma garantia de licença ou comportamento.
Portão de produto e licença
- MATLAB R2026a é proprietário. Não assuma que MATLAB, MATLAB Online, uma toolbox específica, MATLAB Test, MATLAB Compiler, MATLAB Coder, Parallel Computing Toolbox ou um complemento está instalado, licenciado ou disponível para o usuário.
- MATLAB Runtime não é MATLAB. Ele executa aplicações compatíveis produzidas com MATLAB Compiler; não pode executar código-fonte arbitrário ou hospedar o MATLAB Engine para Python. A criação de artefatos requer o compilador licenciado aplicável e todos os produtos usados pela fonte.
- GNU Octave 11.3.0 é software livre sob GPLv3+. Pacotes do Octave não são toolboxes do MATLAB. Nomes semelhantes não implicam equivalência de API, numérica, gráfica ou de licenciamento.
- Pergunte qual ambiente de execução, versão, plataforma, produtos instalados e contexto de licença
o usuário realmente possui. Trate a disponibilidade como
desconhecidoaté confirmação.
Consulte compatibilidade Octave e limites de execução/produto.
Fronteira de segurança inegociável
Nunca execute um arquivo .m, .mlx, binário MEX, arquivo MAT, ação de inicialização ou
encerramento de projeto, instalador de pacote ou artefato gerado não confiável. A revisão estática
não prova segurança.
Trate estas como superfícies de execução ou carregamento de código:
eval,evalin,assignin,fevalderivado de texto,str2func, callbacks, timers, callbacks de aplicativos e caminhos modificados dinamicamente;system,unix,dos, escape de shell!, Java, .NET, Python (py.*,pyrun,pyrunfile), MEX e bibliotecas nativas;mex,codegen, MATLAB Compiler, tarefas de compilação, inicialização de pacotes/projetos e código gerado;load, desserialização de objetos (loadobj, serialização personalizada), handles de função, objetos Java/System e código de classe acessível a partir de arquivos MAT.
.mlx é um arquivo opaco para este kit de ferramentas e MEX é código executável nativo.
Não use pickle do Python para troca. Inspecione primeiro, isole quando apropriado, obtenha
aprovação explícita, então invoque um executável e licença confirmados pelo usuário.
Scripts incluídos são ferramentas estáticas ou de simulação: nenhum inicia MATLAB, Octave,
Python Engine, um compilador ou um subprocesso.
Fluxo de trabalho padrão
- Esclareça o alvo. Registre a versão do MATLAB ou Octave, SO/arquitetura, produto base versus toolboxes/pacotes necessários, entradas/saídas esperadas, tolerâncias numéricas e se a execução está autorizada.
- Inventário estático. Escaneie arquivos
.m, artefatos opacos, caminhos de projeto, produtos necessários e cabeçalhos MAT antes de qualquer carregamento em tempo de execução. - Escolha a forma de código. Prefira funções com um bloco
argumentspara automação. Use scripts apenas para orquestração controlada e live scripts para narrativas interativas revisadas. - Torne a semântica explícita. Registre formas, classes, unidades, regras de valores ausentes, indexação, expansão implícita, algoritmo/semente de RNG, tolerâncias e formatos de saída.
- Teste sem estado oculto. Mantenha dados sintéticos locais ao projeto, caminhos locais ao projeto, gráficos determinísticos e testes independentes de resíduos do workspace base.
- Planeje a execução. Gere um plano de argv, revise efeitos de inicialização/caminho e licenças, e inicie apenas após aprovação explícita fora destes auxiliares.
- Capture proveniência. Faça hash de entradas/código nomeados e registre versão, produtos, política de RNG, tolerâncias e plano de comandos sem despejar o ambiente.
Lista de verificação de linguagem e dados
Scripts, funções e live scripts
- Scripts compartilham o workspace do chamador/base e deixam variáveis para trás. Funções têm workspaces locais e entradas/saídas explícitas.
- Live scripts (
.mlx) misturam código e saída rica, mas não são artefatos de revisão em texto simples. Exporte o código revisado para.mpara inspeção estática. - Evite
clear all,addpath(genpath(...))amplo, dependência depwd, variáveis globais e sombreamento silencioso de nomes. Use raízes de projeto efullfile. - Valide tamanhos, classes e valores em blocos
arguments. Lembre-se de que declarações de tipo podem converter entradas; validadores verificam sem converter. - O arquivo de função principal deve corresponder ao nome da função principal. Funções locais são privadas ao arquivo; desde R2024a, podem aparecer em qualquer lugar de um script fora de contextos condicionais.
function y = scaleSignal(x, options)
arguments
x (:,1) double {mustBeFinite}
options.Scale (1,1) double {mustBeFinite, mustBeNonzero} = 1
end
y = x .* options.Scale;
end
Leia programação.
Arrays, indexação e numéricos
- MATLAB usa indexação baseada em 1, coluna-major.
A(i,j),A(k),A(:,j),A{...}eA.(name)têm semânticas diferentes. *,/,\)e^são operações matriciais; formas pontilhadas são elemento a elemento. UseA\b, nãoinv(A)*b.- Desde R2016b, dimensões compatíveis se expandem implicitamente. Afirme a forma pretendida antes de operações que poderiam acidentalmente formar um resultado externo.
- Pré-aloque quando o tamanho da saída for conhecido, mas não vetorize ao custo de
temporários enormes ou código ilegível. Meça com
timeitou o profiler. - Compare resultados de ponto flutuante com tolerâncias absolutas e relativas
escolhidas para o domínio, não com
==genérico ou um múltiplo mágico deeps. - Fixe tanto o algoritmo aleatório quanto a semente. Use subfluxos nomeados
RandStreampara trabalho paralelo independente; não userng("shuffle")baseado em tempo para uma alegação de reprodutibilidade.
Leia arrays e matemática.
Tabelas, timetable e valores ausentes
- Uma
tabletem variáveis nomeadas de mesma altura que podem ter tipos diferentes.T(linhas,vars)retorna uma tabela;T{linhas,vars}extrai conteúdos;T.Varseleciona uma variável. - Uma
timetableadicionalmente tem tempos de linha. Classifique, valide fusos horários e unicidade, então useretime/synchronizeintencionalmente. - Sentinela de ausentes são específicos de tipo:
NaN,NaT,<missing>,<undefined>e vetores de caracteres vazios. Arrays inteiros e lógicos não têm sentinela de ausente padrão. - Defina opções de importação em vez de confiar em inferência para dados de produção. Preserve unidades, fusos horários, nomes de variáveis, codificações e regras de ausentes.
Leia importação/exportação de dados.
Gráficos e exportação
Use handles explícitos de figura/eixos e tiledlayout; rotule unidades; defina limites,
escalas de cor, tamanhos de fonte e colormap deliberadamente. Prefira exportgraphics
em vez de saveas para saída de publicação. Em R2026a, exporta raster, PDF/EPS/EMF,
SVG, GIF e HTML interativo; as capacidades de formato diferem. Especifique
ContentType="vector" para saída PDF/SVG adequada e Resolution para
saída raster. Revise acessibilidade e comportamento de raster incorporado.
Leia gráficos e exportação.
Arquivos MAT e troca
- Versão 7 é o padrão
savenormal;matfilecria 7.3 por padrão. As versões 4/6/7/7.3 diferem em tipos, compressão e limites por variável. - Versão 7.3 é baseada em HDF5, não um contrato de troca HDF5 arbitrário. Acesso parcial e chunking podem ajudar com arrays grandes.
- Nunca carregue um arquivo MAT não confiável. Inventarie cabeçalhos/conjuntos de dados primeiro. Objetos podem invocar comportamento de desserialização de classes; conteúdo opaco de função/nativo requer escalação.
- Prefira CSV/JSON/Parquet/HDF5 com um esquema documentado para troca simples. Não renomeie cargas pickle como arquivos MAT e não desserialize pickle.
Leia importação/exportação de dados.
Projetos, análises e testes
- Use MATLAB Projects para caminhos controlados, tarefas de inicialização/desligamento, dependências, controle de versão e pontos de entrada reproduzíveis. Revise ações do projeto antes de abrir um projeto não confiável.
matlab.codetools.requiredFilesAndProductse Dependency Analyzer são aproximações estáticas; despacho dinâmico pode causar omissões ou falsos positivos. Um relatório de produto necessário não prova que uma licença está disponível.- Use Code Analyzer (
codeIssues; fluxos de trabalho de texto legados podem usarcheckcode) ecodeCompatibilityReportantes da migração. - MATLAB base inclui fluxos de trabalho
matlab.unittestbaseados em script, função e classe. Execuções paralelas requerem Parallel Computing Toolbox. Seleção baseada em dependência, painéis de qualidade mais ricos, testes gerados e recursos avançados de cobertura/equivalência podem exigir MATLAB Test ou outros produtos. - R2026a
runtestsabre e depois fecha automaticamente um projeto quando os testes alvo pertencem a um projeto que ainda não está aberto. Considere ações de inicialização e desligamento antes de usar este comportamento.
Leia programação e execução/testes.
Integração Python, fixada no R2026a
- R2026a suporta CPython 64-bit 3.9-3.13 para MATLAB Interface to Python, MATLAB Engine for Python e MATLAB Compiler SDK for Python.
- O pacote PyPI R2026a atual revisado aqui é
matlabengine==26.1.12(lançado em 2026-05-08). Ele requer um R2026a instalado; MATLAB Runtime sozinho é insuficiente. R2026a também inclui uma distribuição Engine pré-instalada sob um caminho nomeadomatlabroot. - A instalação do pacote não concede licenças MATLAB ou de toolbox. Configure
um interpretador/executável nomeado; não imprima o ambiente completo,
PATH,PYTHONPATHou credenciais. pyenvcontrola a seleção do interpretador MATLAB-para-Python. Python in-process geralmente requer reiniciar o MATLAB para alternar; Python out-of-process pode ser encerrado e reconfigurado.- Iniciar Engine é uma ação de execução explícita:
matlab.engine.start_matlab()inicia um processo MATLAB e pode verificar uma licença. Nunca o chame apenas para verificar disponibilidade. - Verifique a semântica de conversão para arrays NumPy, DataFrames pandas, tabelas/timetable, strings/valores ausentes, datetime/duration, dicionários, forma/ordem e casos não suportados esparso/objeto/categórico.
Leia integração Python.
CLIs auxiliares locais
Cada auxiliar é livre de rede, limitado, rejeita links simbólicos e não executa. Execute a partir do diretório desta skill com Python 3.11+. Bash é permitido apenas para invocar estes CLIs Python e comandos de validação; nunca o use para executar um plano de argv MATLAB/Octave gerado ou artefato não confiável.
| Auxiliar | Propósito |
|---|---|
scripts/plan_batch_command.py | Produzir argv MATLAB/Octave revisado; nunca executar |
scripts/scan_m_code.py | Escanear texto .m e sinalizar riscos opacos de .mlx/MEX |
scripts/validate_project_manifest.py | Validar caminhos e status declarado de produto/licença |
scripts/inventory_mat_file.py | Inventário de cabeçalho/metadados; nunca chamar loadmat |
scripts/plan_python_compatibility.py | Verificar compatibilidade CPython/Engine R2026a |
scripts/reproducibility_report.py | Hash de artefatos locais nomeados e emitir relatório limitado |
scripts/generate_function_scaffold.py | Simular ou criar esqueletos de função e teste unitário |
python scripts/scan_m_code.py caminho/para/fonte --root caminho/para/projeto
python scripts/plan_batch_command.py matlab script caminho/para/main.m --root caminho/para/projeto
python scripts/validate_project_manifest.py manifest-do-projeto.json --root caminho/para/projeto
python scripts/inventory_mat_file.py dados.mat --root caminho/para/projeto
python scripts/plan_python_compatibility.py --python-version 3.13
python scripts/reproducibility_report.py --root caminho/para/projeto --file src/analisar.m
python scripts/generate_function_scaffold.py analyzeSignal --root caminho/para/projeto
O gerador de esqueleto usa simulação por padrão; escrita requer --write e
recusa colisões. SciPy e h5py são backends opcionais de inventário; se
autorizados, adicione versões revisadas exatas ao arquivo de bloqueio do projeto do chamador.
Eles não são necessários para --help ou inventário apenas de cabeçalho, e esta skill
não realiza instalação de pacotes.
Referências
- Programação, workspaces, projetos, análises, testes
- Matrizes, indexação, tipos, ausência, desempenho
- Métodos numéricos, tolerâncias, RNG, limites de toolbox
- Gráficos e
exportgraphics - Importação/exportação, tabelas/timetable, semântica e segurança MAT
- Execução em linha de comando MATLAB/Octave e migração
- Interoperabilidade MATLAB e Python
- Diferenças de compatibilidade GNU Octave 11.3.0
Ativos JSON incluídos são o manifesto de projeto,
manifesto de reprodutibilidade e
tabela Python R2026a. Não há
diretório templates/ e nenhum arquivo Markdown é carregado de assets/;
testes de link local reforçam este contrato de pacote.