Notizia:
  • Rilasciata Precise Pangolin 12.04. Per ottenerla, visitate questa pagina, oppure provate il tour dal vivo con un browser web moderno.
  • Nuovo forum di Ubuntu-it, l'annuncio. È consigliato aggiornare il proprio profilo e controllare la sezione Gruppo Forum per problemi noti.
  • Rilasciata la versione italiana di Precise Pangolin 12.04. Per maggiori informazioni, consultare questa discussione.
  • Il vincitore del Concorso desktop del mese di aprile è Jerico. L'elenco dei precedenti vincitori è qui.
  • È uscito il numero 17 della Newsletter italiana di Ubuntu. Lo trovate a questo indirizzo.
  • È uscito il numero 59 di Full Circle Magazine in italiano. Lo trovate a questo indirizzo.

linguaggio octave

Linguaggi di programmazione: php, perl, python, C, bash, ecc.

linguaggio octave

Messaggioda lisa89 » lunedì 6 febbraio 2012, 13:24

Salve a tutti mi sapreste dire come si fa in una funzione che legge un file a non far leggere la prima riga? ho provato con un fgetl non commentato ma non funziona, mi da questo

uscita = [](1x0)
se poi modifico il file togliendo la prima riga, allora funziona anche se c'è fgetl non commentato.
Grazie a tutti!
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda Ipnorospo » lunedì 6 febbraio 2012, 18:31

puoi postare un esempio di file da leggere ed il codice che attualmente stai usando?
They see me trollin
Avatar utente
Ipnorospo
Imperturbabile Insigne
Imperturbabile Insigne
 
Messaggi: 3684
Iscrizione: gennaio 2007

Re: linguaggio octave

Messaggioda lisa89 » lunedì 6 febbraio 2012, 19:17

questo è il codice:

Codice: Seleziona tutto
function uscita=leggifile(num_colonne)
% Funzione che permette la letture di file.txt in cui sulla prima riga sono
% presenti i nomi delle variabili e sulle successive i vettori salvati per
% colonne. Se non dovesse esserci la prima riga relativa ai nomi commentare fgetl(fid)
% Come input è necessario conoscere il numero di colonne del file.

nome_file=input('Inserire il nome del file di input tra apici:');
fid=fopen(nome_file, 'r');
if (fid < 0)
    error('errore di lettura: il file non può essere aperto');
end
 fgetl(fid);
 %fgetl(fid);
uscita=fscanf(fid,'%f',[num_colonne,inf]);
fclose(fid);
uscita=uscita';



il file è di questo tipo :
time                                  V(n003)-V(n005)
0.000000000000000e+000 0.000000e+000
1.000000000000000e-010 0.000000e+000
1.000220000000000e-010 4.450325e-006
1.000660000000000e-010 1.357496e-005
1.000981308144201e-010 2.050400e-005
1.001303657048077e-010 2.782419e-005
1.001948354855829e-010 4.354119e-005


grazie!
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda drudox » martedì 7 febbraio 2012, 12:34

puoi fare due cose ...

1) commentare la prima riga del file ..

2) usare importdata('nomefile');
dopo di che ti crea una struttura chimata data (a meno che non li voglia assegnare un nome diverso) e poi richiamare le cose con  variabile.data(:,cumerocolonna)



con il codice che hai postato la cosa piu` veloce e` commentare la prima riga inserendoci davanti un  %
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari

Re: linguaggio octave

Messaggioda ingframin » martedì 7 febbraio 2012, 15:34

Se non hai frettissima ti posto la soluzione stasera, come l'altra volta  ;D
ingframin
Prode Principiante
 
Messaggi: 22
Iscrizione: aprile 2010

Re: linguaggio octave

Messaggioda lisa89 » martedì 7 febbraio 2012, 16:58

puoi fare due cose ...

1) commentare la prima riga del file ..

2) usare importdata('nomefile');
dopo di che ti crea una struttura chimata data (a meno che non li voglia assegnare un nome diverso) e poi richiamare le cose con  variabile.data(:,cumerocolonna)



con il codice che hai postato la cosa piu` veloce e` commentare la prima riga inserendoci davanti un  %



intendi che dovrei commentare la prima riga del file?? perché dato che ho tanti file da caricare e ci sono molti dati in ogni file, ci mettono molto a caricarsi quindi mi chiedevo se c'era un modo nella funzione per fargli saltare direttamente la lettura della prima riga; con matlab questa funzione viene svolta da fgetl("puntatore") e tanti quante sono le righe che si vogliono saltare, octave invece come interpreta fgetl?

grazie a tutti:)
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda drudox » martedì 7 febbraio 2012, 17:02

sinceramente con matlab uso

Codice: Seleziona tutto
nome = importdata(nomefile) ;


e poi carico i vettori in colonna con l'istruzione
Codice: Seleziona tutto
nome.data(:,N)


hai provato la fgetl su octave ?
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari

Re: linguaggio octave

Messaggioda drudox » martedì 7 febbraio 2012, 17:05

si cmq intendevo commentare la prima linea .. credevo ti servisse caricare un file velocemente .. se hai molti file e` un altro paio di maniche .. in ogni caso si puo` fare sicuramente.. ora non so se hai provato import data
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari

Re: linguaggio octave

Messaggioda drudox » martedì 7 febbraio 2012, 17:19

ok risolto ..


Codice: Seleziona tutto
file = fopen("prova.txt", "r") ;


while( (c = fgets(file)) != "\n" )
   c = fgets(file)
end

   uscita=fscanf(file,'%f',[num_colonne, inf]);

   fclose(file);
   
   uscita=uscita'
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari

Re: linguaggio octave

Messaggioda drudox » martedì 7 febbraio 2012, 17:21

il ciclo while legge la riga del file sino a che il charattere trovato non e` new line .. ;)
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari

Re: linguaggio octave

Messaggioda lisa89 » martedì 7 febbraio 2012, 19:04

Allora avevo provato a usare importdata, ma non mi ha funzionato, è che non conosco il linguaggio octave sto alle primissime armi e sto lavorando su questo codice che avevo per matlab, quindi non so come mai.
comunque avevo provato fgetl ma è come se non lo leggesse proprio, quando il file presenta un titolo quindi non voglio che legga la prima riga, se metto un fgetl("puntatore"), mi da questo errore

uscita = [](1x0)

se invece il file che leggo è già senza titolo e c'è un fgetl non commentato mi legge il file correttamente senza saltare nessuna riga, quindi se c'è o non c'è fgetl è la stessa cosa, ma solo per un file già senza titolo. Non capisco proprio  ???

Ho provato a usare il codice ma non so se l'ho adattato bene

Codice: Seleziona tutto
function uscita=leggifile(num_colonne)
% Funzione che permette la letture di file.txt in cui sulla prima riga sono
% presenti i nomi delle variabili e sulle successive i vettori salvati per
% colonne. Se non dovesse esserci la prima riga relativa ai nomi commentare fgetl(fid)
% Come input è necessario conoscere il numero di colonne del file.

nome_file=input('Inserire il nome del file di input tra apici:');
fid=fopen(nome_file, 'r');

while( (c = fgets(fid)) != "\n" )
   c = fgets(fid)
end

   uscita=fscanf(file,'%f',[num_colonne, inf]);

   fclose(fid);
   
   uscita=uscita'


sicuramente c'è qualcosa che non va perché mi funziona solo per un file senza già il titolo, mentre per uno con il titolo mi da sempre l'errore di prima.  ???
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda lisa89 » martedì 7 febbraio 2012, 19:31

Mi sono accorta di una cosa molto strana, che potrebbe essere la causa di tutto. Mentre modificavo la funzione, ho provato a cambiare il titolo della funzione che mi legge i file e mi da errore anche se il corpo della funzione è esattamente lo stesso, mentre se scrivo il nome precedente mi gira correttamente, in più cosa alquanto strana(almeno per me) ho cancellato tutte le funzioni che avevo salvate nella cartella di octave e nonostante questo la funzione mi gira ugualmente, com'è possibile?? quindi significa che le prove che facevo prima commentando fgetl e non, non hanno praticamente valore?perché io credevo di modificare la funzione invece a quanto pare non la modifica.
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda drudox » martedì 7 febbraio 2012, 21:31

non ti seguo ..  :-\

che significa .. spiegati sei in un path senza file .m e ti "vede" la funzione uscita ?? ..

posta l'output det terminale di octave ai comandi

Codice: Seleziona tutto
pwd

ls


e alla chiamata a funzione
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari

Re: linguaggio octave

Messaggioda lisa89 » mercoledì 8 febbraio 2012, 0:03

si praticamente nonostante nella cartella abbia cancellato la funzione leggifile.m  che ti ho postato precedentemente, adesso se la eseguo mi gira correttamente

comunque l'output è questo
Codice: Seleziona tutto
ans=C:\Program Files\Octave\3.0.5_gcc-4.3.0\bin


la funzione deve essere salvata nella cartella bin giusto???
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda lisa89 » mercoledì 8 febbraio 2012, 0:09

scusami tanto ho risolto era proprio questo il problema :)
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda drudox » mercoledì 8 febbraio 2012, 0:34

ma stavi da win ?  C:\ ....

qual'era il problema ???

P.S. snell e fresnell come stanno ?? :D sei tesista in campi eh ..  8) antenne lamda / 2 .. hahaha
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari

Re: linguaggio octave

Messaggioda lisa89 » mercoledì 8 febbraio 2012, 1:04

il problema era che inizialmente avevo salvato la funzione nella cartella bin che è quella che mi da pwd, dopo non so perchè ho cominciato a salvare in un'altra cartella sempre all'interno di octave quindi credevo di modificare la funzione che prende lui invece modificavo l'altra. Mi sono accorta ora dell'errore, quando ho fatto apri dal notepad ho visto che c'era la funzione leggifile.m nella cartella bin, invece quando aprivo la cartella non mi dava nessuna funzione, quindi credevo non ci fosse, per questo mi era crollato il "mondo" addosso e non capivo come potesse girare ancora la funzione che per me invece non c'era.
non so se mi sono spiegata, comunque mi sa che ho creato il panico per una "cavolata" ;D
grazie non me ne sarei accorta se non provavo a fare tutte queste prove, adesso ho capito anche perché non mi leggeva importadata :)
lisa89
Prode Principiante
 
Messaggi: 16
Iscrizione: febbraio 2012

Re: linguaggio octave

Messaggioda drudox » mercoledì 8 febbraio 2012, 8:09

figurati  ;)
Avatar utente
drudox
Scoppiettante Seguace
Scoppiettante Seguace
 
Messaggi: 892
Iscrizione: aprile 2010
Località: Cagliari


Torna a Programmazione

Chi c’è in linea

Visualizzano questa pagina: lucalaugh e 2 ospiti