Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: fafafa01 en 11 Mayo 2016, 05:22 am



Título: escribir un archivo para después poder leerlo en matlab
Publicado por: fafafa01 en 11 Mayo 2016, 05:22 am
Hola como dice el titulo, lo que quiero hacer es escribir un archivo  .txt o .dat con números  los números que se escriben en el archivo se sacan de un arreglo previamente cargado, el problema es que no se si mi archivo esta escribiendo bien los datos porque matlab no me lo abre.

a continuación mi código:

Código:
#include <stdio.h>
#include <math.h>
#define PI   3.141592653589
void archivo_matlab(float,float,float,float,float);

void main (void) {
archivo_matlab(1,2,3,4,5);
}

void archivo_matlab(float A,float a,float h,float B,float b) {
float arre1[151],t=0,x=0,y=0;
int i=0;
FILE *fichero;
while (t<=2*PI){
x=A*sin(a*t+h);
arre1[i]=x;
t=t+PI/75;
i++;
}
fichero=fopen("datos1.dat","w");
fwrite(arre1,sizeof(float),151,fichero);
fclose(fichero);
}




Título: Re: escribir un archivo para después poder leerlo en matlab
Publicado por: AlbertoBSD en 11 Mayo 2016, 14:27 pm
Hola estas escribiendo los datos en formato raw o binario oo cual es bueno cuando lo lees desde otro programa igual. pero no recuerdo si matlab necesira los numeros en formato ascii.. esto es el numero como cadena 10.527388  y demas.

Para hacer esto debes de cambiar el fwrite por fprintf y imprimirlos de uno en uno dentro del ciclo donde creas los numeros y mas o menos asi

Código
  1. fprintf(fichero,"%f\n",x);
En dado caso ya no necesitarias el arreglo ademas de abrir el archivo antes de que empieze el ciclo.


Título: Re: escribir un archivo para después poder leerlo en matlab
Publicado por: fafafa01 en 11 Mayo 2016, 18:14 pm
muchísimas gracias... otra cosa:
me podrías explicar estas lineas de código, no las entiendo:

Código:
int main ( int argc, char **argv )



Hola estas escribiendo los datos en formato raw o binario oo cual es bueno cuando lo lees desde otro programa igual. pero no recuerdo si matlab necesira los numeros en formato ascii.. esto es el numero como cadena 10.527388  y demas.

Para hacer esto debes de cambiar el fwrite por fprintf y imprimirlos de uno en uno dentro del ciclo donde creas los numeros y mas o menos asi

Código
  1. fprintf(fichero,"%f\n",x);
En dado caso ya no necesitarias el arreglo ademas de abrir el archivo antes de que empieze el ciclo.


Título: Re: escribir un archivo para después poder leerlo en matlab
Publicado por: AlbertoBSD en 11 Mayo 2016, 21:43 pm
¿Si funciono ?

sobre la otra pregunta

Código
  1. int argc, char **argv

Son variables para que el programa pueda manejar los parametros.



Título: Re: escribir un archivo para después poder leerlo en matlab
Publicado por: fafafa01 en 12 Mayo 2016, 14:56 pm
sisi funciono perfecto, gracias.