Índice:
- Etapa 1: O Código
- Etapa 2: Este é o código, NÃO COPIE E COLE
- Etapa 3: se por qualquer motivo ele não compilar
Vídeo: Fazendo um arquivo Matlab MEX: 3 etapas
2024 Autor: John Day | [email protected]. Última modificação: 2024-01-30 11:39
Instruções sobre como integrar código C compilado com Matlab. MEX significa executável MATLAB. Os arquivos MEX são sub-rotinas vinculadas dinamicamente produzidas a partir do código-fonte C ou Fortran que, quando compilado, pode ser executado a partir do MATLAB da mesma forma que os arquivos M do MATLAB ou funções integradas. As funções de interface externa fornecem funcionalidade para transferir dados entre arquivos MEX e MATLAB, e a capacidade de chamar funções MATLAB de código C ou Fortran. Aqui, mostrarei tudo que você precisa para criar rapidamente um arquivo mex útil. precisa: = um editor de texto = matlab 6.1 ou superior (versões anteriores também podem fazer arquivos mex, mas um formato um pouco diferente) = matlab tem seu próprio compilador c que vem com ele, mas usei o compilador visual c ++ porque eu o tinha.
Etapa 1: O Código
baixe o arquivo que anexei: mextest1p0.cpp
cpp significa c ++ ……… Isso é o que o código faz: ……… leva um número que você envia do prompt de comando do matlab. Ele imprime "hello world" em matlab ele retorna dois argumentos para matlab, uma matriz de número de dois elementos e uma string o primeiro elemento da matriz de número retornada é 1 + o número que você enviou o segundo elemento da matriz de número retornada é 2 + o número que você enviou ………. Esta é como implementá-lo: ………… salve o arquivo em seu computador inicie o matlab navegue no matlab para o diretório onde o arquivo está e siga as instruções de compilação e execução no topo do arquivo.cpp. Não posso escrever essas instruções aqui porque os instructables editam automaticamente os comandos e os fazem aparecer incorretamente. Na imagem abaixo você pode ver o código funcionando. Não se preocupe com o "aviso da linha de comando", ele parece não ter efeito em nada. Observe no lado esquerdo, o diretório atual contém o arquivo.cpp. À direita você pode me ver compilando o código e depois executando-o a partir do matlab. Leia o arquivo em seu editor de texto (por exemplo, notepad no windows), é muito bem documentado e autoexplicativo, você será capaz de fazer quase tudo que você precisa seguindo as convenções do código (ou seja, copiando e colando e fazendo pequenas modificações) ######################################################## ################################# …….. NOTA …….. por causa de alguma edição automática irritante que instructables faz, o código como visto no próxima página NÃO VAI FUNCIONAR, VOCÊ TEM QUE BAIXAR O ARQUIVO que anexei em vez de copiar e colar isso. ############################################################### ############################
Etapa 2: Este é o código, NÃO COPIE E COLE
############################################################### ############################ …….. NOTA ……..por causa de alguma edição automática irritante que instructables faz, o código como visto nesta página NÃO IRÁ TRABALHO, você TEM QUE BAIXAR O ARQUIVO que eu anexei em vez de copiar e colar isto. ######################################## ####################################################################################################### é um código para um arquivo matlab mex // o código terá um valor numérico e produzirá dois valores numéricos // os dois números de saída são calculados a partir do número de entrada // o código também exibirá um valor de string // o código também imprime "hello world" #include "mex.h" void mexFunction (int nlhs, mxArray * plhs , int nrhs, mxArray * prhs ) {// ################ ####################################### // ######## - imprimir "hello world" - ### ########### // ############################################### ### mexPrintf ("Hello world"); // ############################################ ###### // ######## - Obter material do Matlab - ########## // #################### ################################## / * declara uma variável de matriz para conter os valores de entrada * / double * InValues; / * obtém os valores enviados de matlab * / InValues = mxGetPr (prhs [0]); / * para usar esses valores que foram enviados de matlab, faça InValues [0], InValue [1], etc.de acordo com quantos valores existem. Os InValues serão usados abaixo * /// ################################################################################################ ## // ######### - Retorna uma matriz de número - ######### // ####################### ################################ / * declara a matriz que será enviada ao matlab (o * torna uma matriz) * / double * OutValues; / * Criar / alocar argumento de retorno, uma matriz 1x2 (1 linha 2 coluna) para o primeiro slot da matriz de retorno (plhs [0]) * / plhs [0] = mxCreateDoubleMatrix (1, 2, mxREAL); / * Obtém o ponteiro para o argumento de retorno * / OutValues = mxGetPr (plhs [0]); / * atribui valores a OutValues que residirão no primeiro slot da matriz de retorno, aqui estamos usando InValues para computar OutValues * / OutValues [0] = InValues [0] + 1; OutValues [1] = InValues [0] + 2; // #################################################### // ############### - Retorna uma String - ############### // #################### ################################## / * declara a variável string a ser enviada ao matlab * / char * str; / * atribui um valor ao string * / str = "byebye"; / * colocar a string no segundo slot das matrizes de retorno (plhs [1]) * / plhs [1] = mxCreateString (str); // ########### ##################################//###########--Retorna mais coisas--############//################################ ################# / * para devolver mais coisas, siga as regras gerais acima, mas coloque as coisas em outros slots de plhs, plhs [somenumber] * /}
Etapa 3: se por qualquer motivo ele não compilar
Se por algum motivo ele não compilar (deveria funcionar bem no meu computador) ver esses recursos, foi com eles que aprendi. Eles têm pequenas falhas (o uso de alguma gramática antiga e não funcional, etc.), mas se você alternar entre os dois, deverá ser capaz de remendar algo que funcione.https://web.ccr.jussieu.fr/ccr/ Documentação / Calcul / matlab5v11 / docs / 00009 / 009a1.htmhttps://cnx.org/content/m12348/latest/
Recomendado:
Arduino como ISP -- Queime arquivo hexadecimal em AVR -- Fusível no AVR -- Arduino como programador: 10 etapas
Arduino como ISP || Queime arquivo hexadecimal em AVR || Fusível no AVR || Arduino como programador: ……………………… ASSINAR O meu canal do YouTube para mais vídeos …….. Este artigo tem tudo a ver com arduino como ISP. Se você deseja fazer upload de um arquivo hexadecimal ou se deseja definir seu fusível em AVR, então não precisa comprar um programador, você pode fazer
Como fazer um arquivo .exe: 3 etapas
Como fazer um arquivo Exe: Olá, vou te ensinar como fazer um arquivo executável. (também conhecidos como arquivos.exe) Isso não requer nenhuma codificação. Basta forjar o instalador. Os links serão fornecidos aqui: InstallForge Então, sem mais delongas, vou ensiná-lo a fazer um arquivo a.exe
Arquivo de lote: controles de movimento: 3 etapas
Arquivo em lote: Controles de movimento: Quando pesquisei como criar controles de movimento no CMD, não encontrei resultados precisos, então decidi fazer meus próprios controles que funcionam com as teclas WASD para movimento e 1234 teclas para girar
Fazendo um adaptador Bluetooth Pt.2 (Fazendo um alto-falante compatível): 16 etapas
Fazendo um adaptador Bluetooth Pt.2 (Como fazer um alto-falante compatível): Neste instrutível, mostrarei como utilizar meu adaptador Bluetooth para tornar um alto-falante antigo compatível com Bluetooth. * Se você não leu meu primeiro instrutivo sobre " Fazer um adaptador Bluetooth " Eu sugiro que você faça isso antes de continuar
Converta (apenas cerca de) qualquer arquivo de mídia em (apenas cerca de) qualquer outro arquivo de mídia gratuitamente !: 4 etapas
Converter (apenas cerca de) qualquer arquivo de mídia em (apenas cerca de) qualquer outro arquivo de mídia de graça !: Meu primeiro instrutível, saúde! De qualquer forma, eu estava no Google procurando um programa gratuito que converteria meus arquivos Youtube.flv para um formato que é mais universal, como.wmv ou.mov. Pesquisei inúmeros fóruns e sites e depois encontrei um programa chamado