Ti ringrazio per il tempo che ti ho fatto perdere, volevo chiederti altre cose:
1)Come faccio a linkare il file oggetto a Scilab?
2)Io in teoria dovrei chiamare la compilazione della funzione C da Scilab facendo una cosa simile:
error("spm_conv_vol2.c not compiled - see spm_MAKE.sh")
è possibile farlo?
3)Inoltre compilando come mi dicevi tu (gcc -c -o conv.o spm_conv_vol2.c) mi "svincola" dalle librerie matlab oppure devo intervenire sul codice per modificarlo?
Saluti
Traduzione Matlab-Scilab
-
fabrileroy
10 3 - New entry

- Messaggi: 54
- Iscritto il: 1 feb 2011, 13:22
1
voti
[11] Re: Traduzione Matlab-Scilab
1
voti
[12] Re: Traduzione Matlab-Scilab
1) Scilab è un programma, al massimo ha dei plugin binari esterni, non ha senso linkare un file oggetto a un binario già generato.
Forse vuoi generare un eseguibile o una libreria dinamica ? E' il programmatore che decide cosa diventeranno i sorgenti che sta scrivendo
2) Non ho capito cosa chiedi, Scilab può chiamare qualsiasi comando esterno, ha diverse funzioni per farlo, ad esempio "host":
http://help.scilab.org/docs/5.3.0/en_US/host.html
3) Neanche questa domanda è chiara, il comando che riporti compila solo i file oggetto, di solito non si specifica nessun libreria in questa fase (verrebbe ignorata). Solo quando si crea un eseguibile o una libreria dinamica bisogna per forza specificare tutte le librerie utilizzate, altrimenti il linker segnala errore.
Chi scrive una libreria fornisce anche i file da includere con i prototipi delle funzioni. Se uno sta usando gli include delle librerie di Scilab deve poi linkare le librerie di Scilab, Matlab non c'entra nulla, anche se poi le librerie di Scilab sono compatibili con quelle di Matlab. Eventuali modifiche del codice, se ci sono delle incompatibilità, è compito del programmatore correggerle.
Forse vuoi generare un eseguibile o una libreria dinamica ? E' il programmatore che decide cosa diventeranno i sorgenti che sta scrivendo
2) Non ho capito cosa chiedi, Scilab può chiamare qualsiasi comando esterno, ha diverse funzioni per farlo, ad esempio "host":
http://help.scilab.org/docs/5.3.0/en_US/host.html
3) Neanche questa domanda è chiara, il comando che riporti compila solo i file oggetto, di solito non si specifica nessun libreria in questa fase (verrebbe ignorata). Solo quando si crea un eseguibile o una libreria dinamica bisogna per forza specificare tutte le librerie utilizzate, altrimenti il linker segnala errore.
Chi scrive una libreria fornisce anche i file da includere con i prototipi delle funzioni. Se uno sta usando gli include delle librerie di Scilab deve poi linkare le librerie di Scilab, Matlab non c'entra nulla, anche se poi le librerie di Scilab sono compatibili con quelle di Matlab. Eventuali modifiche del codice, se ci sono delle incompatibilità, è compito del programmatore correggerle.
-
fabrileroy
10 3 - New entry

- Messaggi: 54
- Iscritto il: 1 feb 2011, 13:22
0
voti
[13] Re: Traduzione Matlab-Scilab
Un attimo, voglio spiegarmi meglio:
allora io in Matlab ho la funzione spm_conv_vol.m così strutturata:
function varargout = spm_conv_vol(varargin)
error('spm_conv_vol.c not compiled - see spm_MAKE.sh')
che praticamente consente la compilazione della funzione spm_conv_vol.c e mi ritorna errore se non viene compilata.
Se io creo la funzione Scilab spm_conv_vol.sci così strutturata:
function [varargout] = spm_conv_vol(varargin)
varargout=list();
mode(0);
ieee(1);
error("spm_conv_vol2.c not compiled - see spm_MAKE.sh")
endfunction
e vado ad eseguire la funzione spm_conv_vol.sci passando gli opportuni parametri, Scilab mi restituisce il messaggio:
!--error 10000
spm_conv_vol2.c not compiled - see spm_MAKE.sh
at line 47 of function spm_conv_vol called by :
spm_conv_vol(P,Q,x,y,z,-[i,j,k]);
premetto che spm_MAKE.sh non aiuta a risolvere il problema anche perché costruito su Matlab
Questo è l'origine del mio problema
allora io in Matlab ho la funzione spm_conv_vol.m così strutturata:
function varargout = spm_conv_vol(varargin)
error('spm_conv_vol.c not compiled - see spm_MAKE.sh')
che praticamente consente la compilazione della funzione spm_conv_vol.c e mi ritorna errore se non viene compilata.
Se io creo la funzione Scilab spm_conv_vol.sci così strutturata:
function [varargout] = spm_conv_vol(varargin)
varargout=list();
mode(0);
ieee(1);
error("spm_conv_vol2.c not compiled - see spm_MAKE.sh")
endfunction
e vado ad eseguire la funzione spm_conv_vol.sci passando gli opportuni parametri, Scilab mi restituisce il messaggio:
!--error 10000
spm_conv_vol2.c not compiled - see spm_MAKE.sh
at line 47 of function spm_conv_vol called by :
spm_conv_vol(P,Q,x,y,z,-[i,j,k]);
premetto che spm_MAKE.sh non aiuta a risolvere il problema anche perché costruito su Matlab
Questo è l'origine del mio problema
0
voti
[14] Re: Traduzione Matlab-Scilab
Io non so' cosa deve fare quella funzione, ma posso dirti che quella funziona prima di ritornare chiama la funzione "error":
http://help.scilab.org/docs/5.3.0/en_US/error.html
la quale stampa il messaggio d'errore "spm_conv_vol2.c not compiled - see spm_MAKE.sh" con il numero associato all'errore di 10000 (quello di default).
Il tuo problema è tu hai una funzione che stampa sempre un errore e ti meravigli di ottenere quel esatto messaggio

http://help.scilab.org/docs/5.3.0/en_US/error.html
la quale stampa il messaggio d'errore "spm_conv_vol2.c not compiled - see spm_MAKE.sh" con il numero associato all'errore di 10000 (quello di default).
Il tuo problema è tu hai una funzione che stampa sempre un errore e ti meravigli di ottenere quel esatto messaggio
-
fabrileroy
10 3 - New entry

- Messaggi: 54
- Iscritto il: 1 feb 2011, 13:22
0
voti
[15] Re: Traduzione Matlab-Scilab
La funzione stampa errore se non viene compilata! Io naturalmente vorrei che Scilab la compilasse.
0
voti
[16] Re: Traduzione Matlab-Scilab
La funzione Matlab e Scilab che hai allegato stampano un errore, quindi se vedi un errore vengono eseguite, come ho detto prima.
Oppure io non capisco da quale codice parti e quale comando lanci per la conversione in C e una eventuale compilazione. Scilab ha questo modulo (si chiamano atom) per la conversione in automatico del codice Scilab in C:
http://atoms.scilab.org/toolboxes/scilab2c/
Oppure io non capisco da quale codice parti e quale comando lanci per la conversione in C e una eventuale compilazione. Scilab ha questo modulo (si chiamano atom) per la conversione in automatico del codice Scilab in C:
http://atoms.scilab.org/toolboxes/scilab2c/
-
fabrileroy
10 3 - New entry

- Messaggi: 54
- Iscritto il: 1 feb 2011, 13:22
0
voti
[17] Re: Traduzione Matlab-Scilab
In Matlab semplicemente chiamo la funzione spm_conv_vol (.m) e automaticamente la funzione in C viene compilata (nel caso non venisse compilata sarebbe restituito il messaggio di errore, per esempio se stò usando un architettura a 64-bit la funzione C non viene compilata e mi restituisce l'errore come impostato nel file spm_MAKE.sh). In Scilab quando chiamo la funzione che ho allegato (che è la traduzione in Scilab di spm_conv_vol.m) non mi compila la funzione e mi restituisce errore. perché non mi compila la funzione?
0
voti
[18] Re: Traduzione Matlab-Scilab
Continui ad essere vago, se ti riferisci alla funzione di prima, il codice Scilab chiama sempre la funzione "error" quindi stampa sempre un errore.
Scilab non è Matlab, è compatibile in alcune sue parti ma è un software diverso. Non conosco se è possibile abilitare sempre la conversione del codice Scilab in C e la sua compilazione in automatico. Comunque questa è la documentazione ufficiale:
http://help.scilab.org/docs/5.3.0/en_US ... e2102.html
Scilab non è Matlab, è compatibile in alcune sue parti ma è un software diverso. Non conosco se è possibile abilitare sempre la conversione del codice Scilab in C e la sua compilazione in automatico. Comunque questa è la documentazione ufficiale:
http://help.scilab.org/docs/5.3.0/en_US ... e2102.html
-
fabrileroy
10 3 - New entry

- Messaggi: 54
- Iscritto il: 1 feb 2011, 13:22
0
voti
[19] Re: Traduzione Matlab-Scilab
xyz ha scritto:Continui ad essere vago, se ti riferisci alla funzione di prima, il codice Scilab chiama sempre la funzione "error" quindi stampa sempre un errore.
Quindi tu mi suggerisci di cambiare la funzione spm_conv_vol in modo che non stampi sempre l'errore?
0
voti
[20] Re: Traduzione Matlab-Scilab
La funzione in Scilab che hai indicato prima è questa:
esegue in sequenza queste funzioni (i parametri sono nel tuo codice):
http://help.scilab.org/docs/5.3.0/en_US/list.html
http://help.scilab.org/docs/5.3.0/en_US/mode.html
http://help.scilab.org/docs/5.3.0/en_US/ieee.html
http://help.scilab.org/docs/5.3.0/en_US/error.html
non c'è nessuna condizione, nessun salto, quando esegue "error" stampa l'errore e esce.
Codice: Seleziona tutto
function [varargout] = spm_conv_vol(varargin)
varargout=list();
mode(0);
ieee(1);
error("spm_conv_vol2.c not compiled - see spm_MAKE.sh")
endfunctionesegue in sequenza queste funzioni (i parametri sono nel tuo codice):
http://help.scilab.org/docs/5.3.0/en_US/list.html
http://help.scilab.org/docs/5.3.0/en_US/mode.html
http://help.scilab.org/docs/5.3.0/en_US/ieee.html
http://help.scilab.org/docs/5.3.0/en_US/error.html
non c'è nessuna condizione, nessun salto, quando esegue "error" stampa l'errore e esce.

Elettrotecnica e non solo (admin)
Un gatto tra gli elettroni (IsidoroKZ)
Esperienza e simulazioni (g.schgor)
Moleskine di un idraulico (RenzoDF)
Il Blog di ElectroYou (webmaster)
Idee microcontrollate (TardoFreak)
PICcoli grandi PICMicro (Paolino)
Il blog elettrico di carloc (carloc)
DirtEYblooog (dirtydeeds)
Di tutto... un po' (jordan20)
AK47 (lillo)
Esperienze elettroniche (marco438)
Telecomunicazioni musicali (clavicordo)
Automazione ed Elettronica (gustavo)
Direttive per la sicurezza (ErnestoCappelletti)
EYnfo dall'Alaska (mir)
Apriamo il quadro! (attilio)
H7-25 (asdf)
Passione Elettrica (massimob)
Elettroni a spasso (guidob)
Bloguerra (guerra)

