Traduzione Matlab-Scilab

Strumenti informatici per la matematica applicata, le simulazioni, il disegno: Mathcad, Matlab, Scilab, Microcap, PSpice, AutoCad ...

Moderatori: Foto Utenteg.schgor, Foto Utentedimaios

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
1
voti

[11] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 2 feb 2011, 10:36

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

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
1
voti

[12] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 2 feb 2011, 18:38

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.

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[13] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 2 feb 2011, 19:15

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

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[14] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 2 feb 2011, 20:32

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 :?: :?: :?:

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[15] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 3 feb 2011, 14:37

La funzione stampa errore se non viene compilata! Io naturalmente vorrei che Scilab la compilasse.

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[16] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 4 feb 2011, 21:17

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/

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[17] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 8 feb 2011, 10:15

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?

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[18] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 8 feb 2011, 11:07

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

Avatar utente
Foto Utentefabrileroy
10 3
New entry
New entry
Messaggi: 54
Iscritto il: 1 feb 2011, 13:22
0
voti

[19] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 8 feb 2011, 11:32

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?

Avatar utente
Foto Utentexyz
6.864 2 4 6
G.Master EY
G.Master EY
Messaggi: 1778
Iscritto il: 5 dic 2009, 17:37
Località: Italy Turin
0
voti

[20] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 8 feb 2011, 13:00

La funzione in Scilab che hai indicato prima è questa:

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")
endfunction

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.


Torna a “Programmi applicativi: simulatori, CAD ed altro”