• Saltar al contenido principal
  • Skip to secondary menu
  • Saltar a la barra lateral principal
  • Saltar al pie de página
  • Inicio
  • Secciones
    • Ciencia de datos
    • Criptografía
    • Herramientas
    • Machine Learning
    • Noticias
    • Opinión
    • Productividad
    • Programación
      • JavaScript
      • Julia
      • Matlab
      • Python
      • R
  • Programación
    • JavaScript
    • Julia
    • Matlab
    • Python
    • R
  • Laboratorio
    • Estadística
      • Calculadora del Tamaño Muestral en Encuestas
      • Calculadora de estadísticos descriptivos
      • Test de normalidad
      • Calculadora de contrastes de hipotesis
      • Calculadora de tamano del efecto
      • Simulador de Regresión Lineal con Ruido
      • Visualizador de PCA
      • Visualizador de Series Temporales
      • Simulador de Regresión Logística
      • Simulador de K-Means
      • Simulador de DBSCAN
      • Detector de la Ley de Benford
      • Ajuste de Curvas
      • Calculadora de Matrices
    • Probabilidad
      • Calculadora de Probabilidad de Distribuciones
      • Calculadora de Probabilidades de Lotería
      • Simulador del Problema de Monty Hall
      • Simulador de la Estrategia Martingala
    • Finanzas
      • Calculadora de Préstamos e Hipotecas
      • Conversor TIN ↔ TAE
      • Calculadora DCA con ajuste por inflación
      • Calculadora XIRR con Flujos Irregulares
      • Simulador FIRE (Financial Independence, Retire Early)
    • Negocios
      • CLV
      • Scoring
    • Herramientas
      • Formateador / Minificador de JSON
      • Conversor CSV ↔ JSON
      • Comparador y Formateador de Texto y JSON
      • Formateador y Tester de Expresiones Regulares
      • Inspector de JWT
      • Generador y verificador de hashes
      • Codificador / Decodificador Base64 y URL
      • Conversor de bases numericas
      • Conversor de Timestamp Unix
      • Conversor de colores
      • Generador de UUIDs
    • Juegos
      • Tres en Raya
      • Nim con Q-Learning
    • Más
      • Método D’Hondt
      • Generador de Contraseñas Seguras
  • Noticias
  • Boletín
  • Contacto
  • Tienda
    • Libros
    • Equipamiento de oficina
    • Equipamiento en movilidad

Analytics Lane

Ciencia e ingeniería de datos aplicada

  • Ciencia de datos
  • Machine Learning
  • IA Generativa
  • Python
  • Pandas
  • NumPy
  • R
  • Excel

Proteger las funciones escritas en Matlab para su distribución

diciembre 3, 2018 Por Daniel Rodríguez 2 comentarios
Tiempo de lectura: 3 minutos

El lenguaje de programación utilizado en Matlab es interpretado. Los algoritmos se escriben en archivos de texto plano y estos son directamente interpretados por Matlab. Esto puede ser un problema a la hora de distribuir a otros el código que hemos escrito. Puede ser que no nos interese que el receptor solamente pueda ejecutar la funcionalidad desarrollada sin acceder a la implementación de esta. En un lenguaje compilado con la compilación se oculta la implementación, pero no es así en el caso de Matlab. Para solucionar este problema en Matlab es posible ofuscar el código, convirtiendo un archivo con extensión .m en uno .p. Así alquilen que recibe este segundo archivo podrá ejecutar el código, pero no estudiar la forma en la que se ha resuelto el problema. Permítenos así proteger las funciones escritas en Matlab.

Proteger un archivo .m en uno .p

La función con la que se pueden ofuscar las funciones en Matlab es pcode. A esta función se le ha de pasar el nombre de un archivo para crear uno nuevo con una ofuscación del anterior. Por ejemplo, la siguiente función realiza la suma de dos valores y los devuelve. Esta función se puede guardar en el archivo suma.m.

function result = suma(x, y)
    result = x + y;
end

Ahora ejecutando en la terminal la siguiente línea se generará un nuevo archivo con extensión .p.

Augurios deportivos y portadas malditas, o cuando The Economist predice mejor al revés – El bestiario de los indicadores económicos absurdos (parte 3)
En Analytics Lane
Augurios deportivos y portadas malditas, o cuando The Economist predice mejor al revés – El bestiario de los indicadores económicos absurdos (parte 3)

pcode('suma.m')

El nuevo archivo generado contiene la función anterior, pero no se puede abrir con un editor de texto. Si se elimina el archivo original este funcionará exactamente igual. La única diferencia se encuentra al abrir el archivo, ya que en lugar del código original se observará uno sin sentido. En la siguiente captura de pantalla se muestra el archivo que se acaba de generar.

Función suma ofuscada

Es importante notar que esta operación no de puede deshacer. El archivo .m no se puede obtener a partir del archivo .p. Ya que esto es lo que se buscaba al proteger el archivo. Por lo que es necesario conservar el archivo original si no se desea perder el trabajo.

Proteger una carpeta de archivos

Generalmente los proyectos contienen más de un archivo de código y protegerlo uno a uno puede ser tedioso. La función pcode admite que se pase una carpeta y esta protegerá todos los archivos de esta. Por defecto los nuevos archivos se generarán en la carpeta en la ruta actual, si se desea que se almacenen junto a los archivos originales simplemente es necesario indicar la opción -inplace. Por ejemplo, para proteger todos los archivos de la carpeta test se ha de ejecutar

pcode('test/')

Alternativamente, para que todos los archivos se guarden en la carpeta test junto a los archivos originales.

pcode('test/', '-inplace')

En el caso de que existan otros tipos de archivos en la carpeta, como pueden ser imágenes, estos no serán ofuscados. Aunque es posible utilizar comodines para filtrar los archivos.

Publicidad


Consideraciones antes de distribuir el trabajo

Es importante notar que la función pcode ofusca el código, no lo encripta. Esto hace que el archivo .p sea difícil de comprender, pero no es un solución infalible para proteger la propiedad intelectual. Esto se ha de tener en cuenta a la hora de utilizar función para proteger algún trabajo.

Conclusiones

Hoy hemos visto una solución para proteger distribuir el trabajo realizado en Matlab sin la necesidad de compartir el código. Mediante la ofuscación de este se puede agregar una capa de protección que evita la necesidad de compartir secretos al distribuir trabajo realizado en Matlab. A pesar de no ser una solución completamente segura, puede suficiente en la mayoría de los casos.

Imágenes: Pixabay (Omar González)

¿Te ha parecido de utilidad el contenido?

¡Puntúalo entre una y cinco estrellas!

Puntuación promedio 0 / 5. Votos emitidos: 0

Ya que has encontrado útil este contenido...

¡Síguenos en redes sociales!

¡Siento que este contenido no te haya sido útil!

¡Déjame mejorar este contenido!

Dime, ¿cómo puedo mejorar este contenido?

Publicaciones relacionadas

  • Augurios deportivos y portadas malditas, o cuando The Economist predice mejor al revés – El bestiario de los indicadores económicos absurdos (parte 3)
  • Lanzamos el video de ScoreFlow: crea scorecards de crédito de forma ágil y sin IT
  • El bestiario de los indicadores económicos absurdos: El zoo patrio
  • El Binning en Credit Scoring: El Arte de Discretizar Variables
  • Las fórmulas con DNI, o cómo dividir cualquier cosa entre cualquier otra cosa puede acabar publicado en un titular serio – El bestiario de los indicadores económicos absurdos (parte 5)
  • Data Leakage en Credit Scoring: El Error que Invalida tu Modelo
  • Analytics Lane lanza la versión 1.3 del laboratorio con nuevas herramientas de evaluación de modelos y utilidades prácticas
  • La liga internacional, o cuando Harvard y Johns Hopkins suman peras con manzanas – El bestiario de los indicadores económicos absurdos (parte 6)
  • Customer Lifetime Value: la fórmula clásica que todo analista debería dominar

Publicado en: Matlab

Interacciones con los lectores

Comentarios

  1. Marco Cabrera dice

    noviembre 6, 2019 a las 4:44 am

    Hola, muy interesante y didactica la forma en que explicas cada proceso, tengo una consulta: necesito hacer clustering en matlab, pero el k-means no tiene control sobre la cantidad de elementos de cada cluster por lo que quisiera saber si existe una forma de poder definir la cantidad de elementos que van en cada cluster, a mano esto se puede hacer sin problema, pero deseo automatizar el proceso en matlab, me puedes orientar sobre esto?

    Responder
    • Daniel Rodríguez dice

      noviembre 6, 2019 a las 2:11 pm

      El número de registros en cada clúster lo decide el algoritmo de k-means. No entiendo bien el problema planteado.

      Responder

Deja una respuesta Cancelar la respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

I accept the Terms and Conditions and the Privacy Policy

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Barra lateral principal

Suscríbete a nuestro boletín

Suscríbete al boletín semanal para estar al día de todas las publicaciones.

Política de Privacidad

Analytics Lane en redes sociales

  • Amazon
  • Bluesky
  • Facebook
  • GitHub
  • Instagram
  • Mastodon
  • Pinterest
  • RSS
  • Telegram
  • Tumblr
  • Twitter
  • YouTube

Publicidad

Entradas recientes

Customer Lifetime Value: la fórmula clásica que todo analista debería dominar

julio 14, 2026 Por Daniel Rodríguez

Noticias

Analytics Lane lanza la versión 1.4 del laboratorio con nuevas herramientas de conversión y modelos avanzados de CLV

julio 10, 2026 Por Daniel Rodríguez

La liga internacional, o cuando Harvard y Johns Hopkins suman peras con manzanas – El bestiario de los indicadores económicos absurdos (parte 6)

julio 9, 2026 Por Daniel Rodríguez

Publicidad

Es tendencia

  • Customer Lifetime Value: la fórmula clásica que todo analista debería dominar publicado el julio 14, 2026 | en Ciencia de datos
  • El índice de Davies-Bouldinen para estimar los clústeres en k-means e implementación en Python publicado el junio 30, 2023 | en Ciencia de datos
  • Función de interpolación lineal en Excel sin VBA publicado el noviembre 3, 2021 | en Herramientas
  • Matriz en tabla con Excel Cómo convertir una matriz en tabla con Excel sin VBA publicado el diciembre 4, 2020 | en Herramientas
  • Procesadores cuánticos en Machine Learning e Inteligencia Artificial Procesadores cuánticos en Machine Learning e Inteligencia Artificial: Transformando el futuro de la tecnología publicado el febrero 12, 2025 | en Ciencia de datos, Criptografía, Opinión

Publicidad

Lo mejor valorado

4.9 (24)

Seleccionar filas y columnas en Pandas con iloc y loc

4.6 (16)

Archivos JSON con Python: lectura y escritura

4.4 (14)

Ordenación de diccionarios en Python mediante clave o valor

4.7 (13)

Operaciones de filtrado de DataFrame con Pandas en base a los valores de las columnas

4.1 (11)

Aplicar el método D’Hondt en Excel

Comentarios recientes

  • bif en JSON en bases de datos: cuándo es buena idea y cuándo no
  • bif en Cómo desinstalar Oracle Database 19c en Windows
  • M. Pilar en Cómo eliminar las noticias en Windows 11 y recuperar tu concentración
  • Daniel Rodríguez en Probabilidad básica: cómo entender el azar en nuestra vida diaria
  • Pepe en Probabilidad básica: cómo entender el azar en nuestra vida diaria

Publicidad


Footer

Analytics Lane

  • Acerca de Analytics Lane
  • Boletín de noticias
  • Contacto
  • Libros
  • Lo más popular
  • Noticias
  • Tienda
  • Tiendas afiliadas

Secciones

  • Ciencia de datos
  • Criptografía
  • Herramientas
  • Machine Learning
  • Opinión
  • Productividad
  • Programación
  • Reseñas

Sobre de Analytics Lane

En Analytics Lane tratamos de explicar los principales conceptos de la ciencia e ingeniería de datos con un enfoque práctico. Los principales temas tratados son ciencia de datos, ingeniería de datos, inteligencia artificial, machine learning, deep learning y criptografía. Además, también se habla de los principales lenguajes de programación y herramientas utilizadas por los científicos e ingenieros de datos.

Copyright © 2018-2026 Analytics Lane ·Términos y condiciones ·Política de Cookies ·Política de Privacidad ·Herramientas de privacidad ·Contacto