Pergunta

Parece que são várias maneiras de chamar o MATLAB em C C ++ e chamar C C ++ no MATLAB. Enquanto eu tento listá -los aqui, aponte isso se eu perder alguma coisa.

Para chamar C C ++ no MATLAB, também existem dois métodos. O primeiro é chamar funções nas bibliotecas compartilhadas C. O segundo é criar o código C C ++ em arquivos mex binários, que serão chamados da linha de comando MATLAB. Para o primeiro método, as bibliotecas compartilhadas C são apenas gerais, ou seja, sem alteração no código C para o MATLAB e compiladas do compilador geral C como o GCC?

Para chamar o código MATLAB em C C ++, existem dois métodos disponíveis. O primeiro é o motor Matlab. O segundo é usar o MATLAB Compiler MCC para criar bibliotecas compartilhadas C ou C ++ a partir do seu código MATLAB.

Além do MATLAB e C C ++, podem se comunicar por meio de escrita e leitura de dados de e para algum arquivo (por exemplo, arquivo MAT, arquivo de texto).

Tendo mais de uma maneira de atingir cada um dos objetivos aqui, você poderia me dizer quais casos são melhores para usar qual deles? IE Funções de chamada em bibliotecas compartilhadas vs edifício C ++ Código em arquivos mexilos binários, mecanismo MATLAB vs compilando código MATLAB na biblioteca compartilhada C C ++.

Obrigado e cumprimentos!

Foi útil?

Solução

Eu só tenho expreiência com as funções C ou C ++ de chamadas do MATLAB. Parece -me que a única diferença entre chamar funções em uma biblioteca compartilhada e chamadas funções de um arquivo mex é que, com uma biblioteca compartilhada, você deve chamar a função com 'calllib', que é uma função de tipo de linha de comando e as funções mex permitem Você para chamar funções como se fossem funções internas para que a interface seja um pouco mais limpa.

Minha sugestão é usar arquivos mex se

  • Você está usando C ++ (pode ter que escrever um invólucro para usar um C ++ em uma biblioteca compartilhada)
  • Você está usando o MATLAB como cola para um grande número de rotinas otimizadas de C ou C ++. Você vai querer chamá -los de maneira limpa.

Use biblioteca compartilhada se

  • Você já possui uma biblioteca C existente que pode ser usada sem modificação.
  • Você só precisa de um pequeno número de chamadas para as funções C.

Realmente, tudo se resume à interface. Pessoalmente, prefiro a rota do arquivo mex porque ela fornece a interface mais limpa do MATLAB para a função C ou C ++. Você pode chamá -lo como apenas mais uma função com os tipos padrão do MATLAB. Com uma biblioteca compartilhada, você pode ter que fazer alguma formatação de dados antes de chamar a função da biblioteca

Outras dicas

Eu acho que os métodos que você nomeou estão corretos (já faz um tempo desde que eu os usei)

O Matlab C-Compiler não é realmente especial; É possível usar diferentes compiladores. Ver link Lista de compiladores suportados. Isso não inclui o GCC, mas o Visual Studio está incluído. Você terá problemas ao vincular as bibliotecas fornecidas.

Basicamente: ligar para o Matlab de C é algo que você faria se precisar de uma interface apertada; Por exemplo, se você deseja sincronizar 2 ferramentas, ou sua função S (simulink) requer informações adicionais. Mas então, esse arquivo é chamado rapidamente pelo MATLAB/SIMULINK em primeiro lugar.

Chamar C do MATLAB é o que você deseja fazer se escrever suas próprias funções ou extensões para o MATLAB.

A escolha entre C e C ++ é sua; Se você começar de uma folha em branco, sugiro que você use C ++; Você não precisa usar a funcionalidade completa, mas permite mais liberdade. Além disso, mais bibliotecas tendem a estar disponíveis para C ++ hoje em dia.

C é a linguagem de escolha se você precisar migrar para ambientes muito diferentes; ou seja, para compilar C a DSPs, por exemplo. Ou se você tiver código legado em C para começar. A mistura C e C ++ é possível, mas A pode ser um pouco pesado; Tenho certeza de que você encontrará tópicos no StackOverflow apenas neste assunto.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top