%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% MAP05 - Metodos Matriciais Computacionais - PPGMAp UFRGS %% Mat01050 - Algebra Matricial Computacional - DMPA UFRGS Tecnicamente, esse nao eh um script, pois nao pode ser executado. Entenda como um conjunto de instruções que facilmente podem ser carregados com o mouse. Objetivo: interface de Scilab com subrotina em C, em ambiente Linux com gcc. Programa muito simples, calcula a media harmonica m das componentes de um vetor x() edite arquivo: mharmonica_c.c #include void mharmonica_c(double x[], int *n, double *pmedia){ int i; double media; media=0.0; for (i=0;i< *n;i++){ if (fabs(x[i]) < 1E-7) { media=.0; return; } else { media = media + 1.0/x[i]; } } media = *n/media; *pmedia=media; return; } compile com: gcc -shared -o mharmonica_c.so mharmonica_c.c No Scilab: ilib_for_link("mharmonica_c",'mharmonica_c.c',[],"c") exec loader.sce function u=mh(x) n=max(size(x,1),size(x,2)); u=call("mharmonica_c",x,1,"d",n,2,"i","out",[1,1],3,"d") endfunction Atente: os passos acima devem ser repetidos a cada nova sessão do Scilab, pois a construção é dinâmica. %% %% Feito, JBC 31Ago2012 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%