Aptitud Intuitiva

martes, 6 de abril de 2010

Filtros Digitales (FIR) en Scilab


Saludos, la presente es para notificar que ya está disponible un tutorial de diseño y uso de filtros digitales para Scilab, en el cual se muestra el uso de las funciones iir y flst.
En este tutorial se usa la función fftgraf, la cual grafica el espectro de una señal en función del tiempo. Esta función se puede encontrar en el archivo scikami.zip

Atentamente:

Ing. Manuel Pérez P.

10 comentarios:

  1. Profe estuve probando la funcion FFTGRAF() desde netbeans y me genera el siguiente error: Error in Java_javasci_Scilab_Exec routine.

    el codigo que intente probar fue el siguiente:

    import javasci.Scilab;
    public class prueba3 {
    public static void main(String[] args) {
    Scilab.Exec("fs=10000");
    Scilab.Exec("t=0:1/fs:0.1");
    Scilab.Exec("x=sin(2%pi*100*t)+sin(2%pi*1000*t)");
    Scilab.Exec("yf=fftgraf(x)");

    }
    }

    si me podria ayudar porfa

    ResponderEliminar
  2. Saludos, fftgraf no es una función nativa de Scilab, fue diseñada por mí, por lo tanto debes cargarla previamente, a tu programa le añadiría la siguiente línea de código:
    Scilab.Exec("exec fftgraf.sci");

    Esta función la puedes descargar desde el siguiente enlace:
    http://sites.google.com/site/aptitudintuitiva/archivos/SciKami.zip?attredirects=0&d=1

    Este archivo contiene un conjunto de programas que hice para Scilab, entre ellos fftgraf.sci. Para que tu programa funcione correctamente te recomiendo guardar fftgraf.sci en la carpeta del proyecto NetBeans en el cual estas trabajando.

    Espero que te funcione, cualquier cosa me avisas, atentamente:

    Ing. Manuel Pérez P.

    ResponderEliminar
  3. Profe hice lo que ud dijo.. descargue el rar.. y guarde fftgraf.sci en la carpeta del proyecto, pero aun me genera el siguiente error:


    Error in Java_javasci_Scilab_Exec routine.
    Error in Java_javasci_Scilab_Exec routine.
    -->// Autor: Ing. Manuel P�rez P.

    -->// Libre Distribuci�n 2006

    -->// Generador del espectro de una se�al variable en el tiempo versi�n 2.0

    -->function fftgraf(f,t)
    -->//Funci�n dise�ada para la graficaci�n del espectro unilateral de una se�al evaluada en el tiempo.
    -->//f es la funci�n a evaluar, t representa la variable de dicha funci�n.
    -->N=size(t,'*');
    -->tm=t(N)/(N-1);
    -->y=2*fft(f,1);
    --> p=(1/tm)*(0:(N/2))/N;
    --> n=size(p,'*');
    -->plot2d(p,abs(y(1:n)),14)
    -->endfunction

    GENERACIÓN CORRECTA (total time: 19 seconds)

    espero me pueda responder pronto

    ResponderEliminar
  4. Saludos, si puedes envíame el código completo de la clase que estás implementando. Revisa también http://jingmap.blogspot.com/2010/05/demofm-otro-ejemplo-de-javasci.html, en esa entrada del blog hay una nueva versión de fftgraf.sci, optimizada para trabajar con javasci.
    También, si me dices que estás implementando te puedo ayudar con el código.

    Atentamente:

    Ing. Manuel Pérez P.

    ResponderEliminar
  5. estoy intentado probar su ejemplo del tutorial que ud publico en esta entrada.. solo que me concentre en obtener el espectro de la señal con la funcion que ud creo.. ya descargue el rar y guarde la funcion dentro de la carpeta del proyecto.. este es el codigo:


    import javasci.Scilab;
    public class prueba3 {
    public static void main(String[] args) {
    Scilab.Exec("exec fftgraf.sci");
    Scilab.Exec("fs=10000");
    Scilab.Exec("t=0:1/fs:0.1");
    Scilab.Exec("x=sin(2%pi*100*t)+sin(2%pi*1000*t)");
    Scilab.Exec("yf=fftgraf(x)");

    }
    }

    aparte de cargar la libreria javasic, tengo que añadir otra cosa para poder utilizar su funcion? tengo muyyy pocos conocimientos sobre java.

    esto lo hago con la intension de aplicar la funcion a otro programa que me interesa..

    ResponderEliminar
  6. Saludos, he revisado el código, debes cambiar la línea donde estas las funciones que quieres analizar por la siguiente:
    Scilab.Exec("x=sin(2*%pi*100*t)+sin(2*%pi*1000*t)");

    Te faltó multiplicar el dos por la constante %pi.
    Para que este ejemplo te muestre una gráfica con el espectro de la señal de estudio, te recomiendo cambiar el código de fftgraf.sci por el siguiente:

    function fftgraf(f,t)
    N=size(t,'*');
    tm=t(N)/(N-1);
    y=2*fft(f,1);
    p=(1/tm)*(0:(N/2))/N;
    n=size(p,'*');
    plot2d(p,abs(y(1:n)),14)
    endfunction

    Atentamente:

    Ing. Manuel Pérez P.

    ResponderEliminar
  7. Gracias profe.. ya me genera el espectro... estare mas pendiente en cuanto a la sintaxis.. Estudiare el codigo que me sugirio para entenderlo bien.. Muchas gracias :)

    ResponderEliminar
  8. Siempre a tu orden, cualquier cosa me avisas

    ResponderEliminar
  9. Buenas, depronto sabe como mostrar el espectro de una señal de voz y reconstruirla nuevamente para reproducirla, esto con scilab
    Muchas gracias

    ResponderEliminar
  10. Saludos, podrías capturar la señal de voz para luego procesarla, de tal forma que adapte al formato matricial usado por Scilab, luego aplicas el filtro con Scilab para luego recontruirla con dicho software.
    Se que hay una función en Scilab que permite la reproducción de señales de voz, pero, en este momento no la recuerdo, déjame averiguar y te aviso

    ResponderEliminar

Información muy importante

INFORMACIÓN IMPORTANTE