Forum

Nome Utente:
Password:
Riconoscimi automaticamente
 Tutti i Forum
 MolecularLab
 Bioinformatica
 matlab e fwrite
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
I seguenti utenti stanno leggendo questo Forum Qui c'è:

Aggiungi Tag Aggiungi i tag

Quanto è utile/interessante questa discussione:

Autore Discussione  

serbring
Utente Junior



486 Messaggi

Inserito il - 03 gennaio 2009 : 22:15:30  Mostra Profilo  Visita l'Homepage di serbring Invia a serbring un Messaggio Privato  Rispondi Quotando
ho la funzione creata in matlab che è mostrata sotto. ottengo un errore nella fwrite nel quale mi dà il seguente errore

??? Error using ==> fwrite
Invalid precision.


però non riesco a capire perchè è sbagliato. C'è qualcuno che riesce ad aiutarmi? Grazie mille! :)

function vibrazioni_2631 (dati,nome,area_prova,cond_prova,vel)
kx=1.4;
ky=1.4;
kz=1;
dt=dati(4,1)-dati(3,1);
l=length(dati(1,:))
f_nome=[nome, '_elab.txt'];
fid=fopen(f_nome, 'a')

prova.nome=nome;
prova.area=area_prova;
prova.cond=cond_prova;
prova.vel=vel;
%calcolo rms
prova.aw_x=sqrt(dt*trapz(dati(:,2).^2)/(dati(end,1)));
prova.aw_y=sqrt(dt*trapz(dati(:,4).^2)/(dati(end,1)));
prova.aw_z=sqrt(dt*trapz(dati(:,6).^2)/(dati(end,1)));

prova

%calcolo accelerazione risultante
prova.aw=max([kx.*prova.aw_x,ky.*prova.aw_y,kz.*prova.aw_z]);

%calcolo crest factor
prova.cf_x=max(dati(:,2))/prova.aw_x;
prova.cf_y=max(dati(:,4))/prova.aw_y;
prova.cf_z=max(dati(:,6))/prova.aw_z;

%calcolo vdv
prova.vdv_x=(dt*trapz(dati(:,2).^4))^0.25;
prova.vdv_y=(dt*trapz(dati(:,4).^4))^0.25;
prova.vdv_z=(dt*trapz(dati(:,6).^4))^0.25;
prova.vdv=max([kx.*prova.vdv_x,ky.*prova.vdv_y,kz.*prova.vdv_z]);


%calcolo tempo
prova.ore=fix((0.5/prova.aw).^2*8)
prova.min=rem((0.5/prova.aw).^2*8,60)
prova.tempo=(0.5/prova.aw).^2*8/24
if prova.tempo>=1 
    prova.tempo=0.99
end


fwrite (fid, '%s ; %s ; %s ; %4.0f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f ; %4.2f', ...
prova.nome, prova.cond, prova.area,prova.vel,prova.aw,prova.vdv,prova.ore,prova.min,prova.aw_x,prova.aw_y,prova.aw_z,prova.vdv_x,prova.vdv_y,prova.vdv_z,...
prova.cf_x,prova.cf_y ,prova.cf_z ,prova.tempo);

fclose (fid)

dallolio_gm
Moderatore


Prov.: Bo!
Città: Barcelona/Bologna


2445 Messaggi

Inserito il - 04 gennaio 2009 : 00:00:13  Mostra Profilo  Visita l'Homepage di dallolio_gm  Clicca per vedere l'indirizzo MSN di dallolio_gm Invia a dallolio_gm un Messaggio Privato  Rispondi Quotando
Citazione:
fwrite (fid, '%s ; %s ; %s ; %4.0f
Forse non gli va bene lo 0 in %4.0f.

Il mio blog di bioinformatics (inglese): BioinfoBlog
Sono un po' lento a rispondere, posso tardare anche qualche giorno... ma abbiate fede! :-)
Torna all'inizio della Pagina

chick80
Moderatore

DNA

Città: Edinburgh


11491 Messaggi

Inserito il - 04 gennaio 2009 : 00:34:09  Mostra Profilo  Visita l'Homepage di chick80 Invia a chick80 un Messaggio Privato  Rispondi Quotando
fwrite non accetta quei parametri.
Quello che vuoi fare tu si può fare creando una stringa con sprintf (con i vari %x.xf) e poi scriverla con fwrite.

sintassi di fwrite

PS: %4.0f anche se un po' inusuale è tecnicamente valido.

Sei un nuovo arrivato?
Leggi il regolamento del forum e presentati qui

My photo portfolio (now on G+!)
Torna all'inizio della Pagina
  Discussione  

Quanto è utile/interessante questa discussione:

 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
Vai a:
MolecularLab.it © 2003-18 MolecularLab.it Torna all'inizio della Pagina