|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
0 ^9 D; W- q' n' f. keval的功能简单来说就是可以把字符串当做命令来执行,
0 E/ n- p2 x/ L) k3 y# M7 d0 G9 s! l( o" }
之前没用到的时候对这句话不太懂,百度了一下,看到有人举的例子:
& [/ t- Q4 [1 G5 A+ s) c7 M# W" C) z" U
eval('y=sin(1)')与命令 y=sin(1)等价
( \* M, ~. M; Y: E* c: m4 @+ J) q
. n3 b, a2 \, m8 ]) J$ {emmm看完后虽然懂了基本用法还是一脸懵逼,道理我都懂,但是 这不是自讨无趣吗,直接打命令不是更简单吗?$ C7 j; Y6 h/ o3 F2 U! z: ~( Z. T
3 I: w w+ J& L2 k( T$ t4 H最近需要把数据按天按时段导出excel我才仔仔细细地研究了一下eval函数的具体用法,真的好用!也指出了遇到的坑,帮助后面像我一样的小白:9 C, n* ]) B+ g. y! r
7 f& Z8 v p7 v3 d# h3 weval用于循环中是再好不过了,特别是有些变量的名字中含有有规律的数字,比如我们现在要依次把data1,data2,data3写入excel,并命名为data1.xlsx,data2.xlsx,data3.xlsx,
A0 k& \+ r2 m( M4 O8 V1 i) N
. T, X/ k. H3 u当然你可以写三行:
. j9 h+ [, n" d( f/ M1 [* o* f0 t5 q2 J v
xlswrirte('data1.xlsx',data1); w) w: |4 m- \' ~2 A# T) D
. l; V7 x" _0 b( F3 Qxlswrirte('data2.xlsx',data2)" ?1 K2 W' }& Y. H* a
/ J8 k! I$ a& U7 e% T
xlswrirte('data3.xlsx',data3)" M" m; ~. c# H( N
/ T' g0 O" A' q8 V" V但是假如现在有1000个这种data1,data2,...,data1000呢
: W9 ?8 h4 o& b% E, Q0 Z% M9 Z; p1 i# e' g f4 w
这个时候就需要eval出马了,我们也可以只用三行:
" j' Y+ h6 F- c3 J0 s
4 B9 y% t; W- T/ vfor i=1:1000
/ v) \1 }2 {( E& q3 x0 C
; |1 A" n v; }6 n$ U2 \% I, yeval(['xlswrite(''data',num2str(i),'.xlsx'',','data',num2str(i),')'])
/ t3 U8 A, h5 }1 u; t
/ D3 N4 p* G* Wend
3 A* u2 \+ P9 q' V0 f
x) q3 C$ K2 N! q1 S* D: U) U% g%注意上面的eval语句语句中第一个data前面有两个'',而xlsx后面也有两个'',这就是给我们初学者埋下的坑哈哈,两个''号中第一个'代表转义字符,意思是两个''号中第二个'号为命令中的'号,不是用来分割字符串文本的!
7 e3 b. j& g. `6 M" o
1 t2 s. B2 d% y0 b3 L- W8 D%使用eval时只需要先把想要表示的语句即命令写好,再用'号分割成一段段字符串,注意上面提到的'可以用作转义字符的情况+ K; w2 W/ k' W' L; E+ ~+ ~9 a
, ?% g% @# w! ~& W$ j+ G最后放一个我用来分表写入excel的实例吧,看起来复杂一点但是道理都是一模一样的:
; ?" _6 P2 y" Z* s4 |5 b: s( D2 F: Y
这个是把2880个变量(15min一个,一天96个,30天2880个,按时间顺序已排好序)每96个变量一个excel,每个变量一个sheet:9 z e \( u1 Y; h3 S* m# d b
& B; X) @9 Q( y
8 U4 P. n- U$ A7 [7 \4 N% J# z5 Z3 y; t+ B6 b
clear. G- S( U3 C& X3 s3 w. g; N0 ^7 V# O8 p
clc" `/ i6 c$ |8 B/ {* w
close all
# G" F, k/ i3 u: \load time_volume_data.mat%载入数据' S2 r0 M8 I% R" n9 q$ ?* |
%把站点流量按天按时段写入excel文件
: \6 I7 a% \# Zm=1;+ Z) p% t8 u! H
day=1;
4 k5 B, V: t2 H, Qfor n=1:2880 L" V+ C/ A+ b) k
eval(['xlswrite(''data',num2str(day),'.xlsx''',',','data',num2str(n),',','''sheet',num2str(m),''')']);8 W! K& {7 v }2 H
if m==96' O% C7 j' y. |) w
m=0;! w- N( d& W2 z9 }3 f3 M; a
end4 w. ], P; N% u8 k! H
if mod(n,96)==0
, y( G5 a4 \' [1 t3 s day=day+1;8 h0 O6 V+ j4 w) z- ]6 J
end
1 }/ v1 J7 a0 K B2 b" ^ m=m+1;
" r* T+ @1 X6 [! q% H- |, H2 Yend
3 _( A/ C- }$ W以上,希望大家eval用的愉快! |
|