Matlab - Ayuda con línea de código.

   
Vista:

Ayuda con línea de código.

Publicado por pablo (7 intervenciones) el 13/08/2015 20:41:44
Hola, buenas tardes. Tengo una duda con una línea de código de la programación de una norma, la línea de código es la siguiente:

eval(['save',path,file,'_al.txt al -ascii -tabs'])

Busqué por varias partes que hacia eval pero no logro entender que hace, además de que arroja un error, ??? Error: Unexpected MATLAB operator. Agradecería que me orientaran un poco, gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Daniel

Ayuda con línea de código.

Publicado por Daniel (212 intervenciones) el 13/08/2015 21:02:19
de alguna manera para que se entienda lo que hace "eval" es escribir un instruccion que se le dá en formato de texto (como si escribieses esa instruccion en el command window).

en tu ejemplo:
si

path='c:\';
file='pepe';

crea una cadena de caracteres:

['save',path,file,'_al.txt al -ascii -tabs']---->'save c:\pepe_al.txt al -ascii -tabs'

luego
eval(['save',path,file,'_al.txt al -ascii -tabs'])

escribe y ejecuta

save c:\pepe_al.txt al -ascii -tabs

Si no anda chequea que lo que vaya a escribir tenga sentido (que no falten espacios u otros caracteres). te recomiendo poner antes del eval

disp(['save',path,file,'_al.txt al -ascii -tabs'])

para ver que es lo que quiere escribir.

me parece que sobra un al (el que está entre txt y -ascii) y no sé si en vez de 'save' no va 'save ' (este ultimo tiene un espacio)

Comentanos como te fue

Saludos

Daniel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con línea de código.

Publicado por pablo (7 intervenciones) el 13/08/2015 21:08:20
Acabo de revisarlo, le agregue el espacio a save de modo que ahora ya no arroja un error, sin embargo no entiendo para que podría servir esta línea de código, pense que podia guardar los datos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con línea de código.

Publicado por pablo (7 intervenciones) el 13/08/2015 22:06:24
El código completo es:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
function SpineAccXY(path,file, XorY)
%SpineAccXY: Calculates the human response of the spine, alx, aly, Dx and Dy from acceleration
% measurements in the seat. The result is stored in the file file_al.txt,% along with the time 
%vector.
as=load([path,file,'.txt']); %load input file
%separation of input time data and measurement data
time=as(:,1);
as=as(:,2);
%calculation of al(t)
a=[1,-1.957115,0.963949];
b=[0.0192752,0.00433451,-0.0167763];
al=filter(b,a,as);
%call the function CountPeaks to calculate Dk
Dk=CountPeaks(al,XorY);
%plot the result
plot(time,al)
title(file)
legend(['D',XorY,' = ',num2str(Dk)],1);
%add the time column to the calculated response and the calculated value Dk to the last row and second
%column
al=[time,al;0 Dk];
eval(['save ',path,file,'_al.txt al -ascii -tabs'])
 
end

Entiendo que la idea es guardar los daros, solo que no lo esta haciendo. Este codigo lo hace para dos conjuntos de datos distintos, en porimera instancia lo hace para 'x' y luego para 'y', automaticamente entonces deberia guardar una primero y luego la otra. al corresponde a la nueva variable que se quiere guardar, file en este caso deberia ser filex o filey en sus respectivos casos, pero no lo esta guardando.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar

Ayuda con línea de código.

Publicado por pablo (7 intervenciones) el 14/08/2015 00:02:14
Tema resuelto, gracias por ayudarme Daniel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar