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

[1] Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 1 feb 2011, 13:34

Buon giorno a tutti, sono un nuovo utente e volevo presentarvi un problema che è giorni che non riesco a risolvere...
Sto effettuando il porting di un SW (di dimensioni estese) da Matlab a Scilab, il problema si verifica nel momento in cui devo gestire una compilazione in linguaggio C che in Matlab viene eseguita senza problemi ma in Scilab no. Ho provato a utilizzare un compilatore esterno ma queste funzioni C fanno riferimento a librerie di Matlab che naturalmente in Scilab e nel compilatore non esistono. ES:

free_maps(map, 1);
if (!oVol)
{
mxDestroyArray(wplane_args[1]);
mxDestroyArray(wplane_args[2]);
}


(naturalmente questa è una una piccolissima parte del codice, solo per dare un'idea).
mxDestroyArray fa parte delle librerie Matlab e quindi il compilatore riporta errore!
Esistono librerie per Scilab che possano ovviare al mio problema oppure è possibile risolvere o tradurre queste funzioni in modo che non "dipendano" più da Matlab?
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

[2] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 1 feb 2011, 14:38

Prima di tutte è meglio sempre specificare il sistema operativo, la versione di Scilab e il compilatore C esterno usato.

Nel riportare il problema è preferibile l'esatto messaggio d'errore prodotto dal compilatore (il primo non tutti) e non un riassunto approssimativo.

Comunque io sotto Linux con Scilab 5.3.0 ho cercato il nome della funzione, nel file include "scilab/mex.h" ho trovato il prototipo della funzione:

Codice: Seleziona tutto

...
void mxDestroyArray(mxArray *ptr);
...

quindi basta controllare se viene incluso correttamente nei sorgenti.

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

[3] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 1 feb 2011, 20:19

SO Windows Xp, Scilab 5.2.2, compilatore: MinGW.
Quando provo a compilare supponendo di aver messo in una stessa cartella anche i file .h di Scilab necessari alla compilazione, MinGW mi ritorna:

Immagine.JPG
questa è la prima parte dei molti errori
Immagine.JPG (86.52 KiB) Visto 5965 volte


Immagine2.JPG
questa è la parte finale dell'errore
Immagine2.JPG (78.84 KiB) Visto 5945 volte


tra le due immagini ci sono numerosi messaggi simili...

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

[4] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 1 feb 2011, 20:40

I messaggi d'errore sono in ASCII, allegare delle immagini bitmap rende impossibile selezionare il testo per evidenziare gli errori, consiglio in futuro di fare un semplice copy and paste del testo.

Il compilatore non è Mingw ma il GCC. Mingw è un porting (non è l'unico) per MS-Windows del compilatore GCC.

I messaggi d'errore non sono del compilatore ma del linker, non gli fornisci le librerie necessarie per creare l'eseguibile quindi tutti i riferimenti esterni generano un errore, come dice chiaramente il messaggio (che non posso selezionare e riportare).

Poi sbagli le opzioni del compilatore, consiglio di leggere bene il manuale. Per compilare un file oggetto gli devi passare l'opzione "-c" altrimenti genera l'eseguibile e gli devi di conseguenza specificare tutte le librerie necessarie.

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

[5] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 1 feb 2011, 20:52

Le librerie però sono (o dovrebbero) essere quelle di Matlab... io dovrei cercare di ovviare a questo problema se necessario, in quanto le librerie di Matlab sono coperte da copyright e io non posso bellamente prenderle e copiarle (eventualmente nel compilatore). E' questo il mio problema, è possibile aggirare la necessità di queste librerie licenziate?

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

[6] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 1 feb 2011, 21:10

fabrileroy ha scritto:Le librerie però sono (o dovrebbero) essere quelle di Matlab...

Scusa, forse ho spiegato nei dettagli gli errori che hai commesso e forse non hai letto bene la mia risposta.

Se compili il file oggetto (ha l'estensione .o come ho visto nella bitmap allegata prima) con l'opzione "-c" del compilatore ottieni di nuovo tutti quei messaggi d'errore ?

Scilab ha le librerie con tutte le funzioni presenti nei file include ma le devi specificare quando crei l'eseguibile non il file oggetto.

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

[7] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 1 feb 2011, 21:21

No non mi da tutti quegli errori mi ritorna:

C:\Documents and Settings\User\Desktop\San Raffaele\Scilab\spm>gcc -c conv.o spm_conv_vol2.c

gcc: conv.o: No such file or directory
spm_conv_vol2.c: In function 'mexFunction':
spm_conv_vol2.c:321:18: warning: assignment from incompatible pointer type

C:\Documents and Settings\User\Desktop\San Raffaele\Scilab\spm>


Se vuoi ti allego il file contente la funzione spm_conv_vol2.c ?

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

[8] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 1 feb 2011, 21:39

fabrileroy ha scritto:C:\Documents and Settings\User\Desktop\San Raffaele\Scilab\spm>gcc -c conv.o spm_conv_vol2.c

E' sbagliata la linea di comando, devi aggiungere l'opzione "-c" non sostituire l'opzione "-o". Questo si capisce chiaramente dall'errore "conv.o: No such file or directory".

Prova a compilare il file oggetto "conv.o" con questa riga di comando:

Codice: Seleziona tutto

gcc -c -o conv.o spm_conv_vol2.c


Il manuale del compilatore spiega nei dettagli tutte le opzioni utilizzate.

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

[9] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentefabrileroy » 1 feb 2011, 21:46

Ora ho solo l'errore:

spm_conv_vol2.c: In function 'mexFunction':
spm_conv_vol2.c:321:18: warning: assignment from incompatible pointer type

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

[10] Re: Traduzione Matlab-Scilab

Messaggioda Foto Utentexyz » 1 feb 2011, 22:11

fabrileroy ha scritto:spm_conv_vol2.c: In function 'mexFunction':
spm_conv_vol2.c:321:18: warning: assignment from incompatible pointer type
[/i]

Non è un errore, in italiano "warning" si può tradurre in "avviso".

Ti ha generato il file oggetto "conv.o", in caso di errore il compilatore non avrebbe mai generato il file in uscita.


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