PDA

查看完整版本 : load大量数据的问题(新)


maizi816
2008-07-22, 23:29
现在要load 一组数据ACDC1.mat, ACDC2.mat, ..... ACDC100.mat去计算
在每个mat数据文件里都有名为SpeedVehicle的Array editor数据

我的编程如下:
for d=1:100
z=['load ACDC' int2str(d) '.mat']
eval(z)
end

因为每个mat文件里的数据都叫SpeedVehicle,所以在workspace里下一个数据会自动取代上一个,最后的结果只有最后一个数据.怎么才能得到所有的SpeedVehicle 数据

这种情况该怎么解决啊?有人知道吗?谢谢

remnant
2008-07-23, 08:53
load好一个后,通过赋值更改变量名字,再load下一个。

maizi816
2008-07-23, 18:13
你的意思是我需要一个一个的load数据啦,但如果数据很多,手工输入太费时间了,怎么才能让程序自动运行完?

remnant
2008-07-23, 19:32
不需要手工,我给你个例子。

for d = 1:100
z = [ 'load ACDC', int2str(d), '.mat'];
eval(z); % 此时, SpeedVehicle已经是直接可见的了
data( :, :, d ) = SpeedVehicle( :, : ); % 将SpeedVehicle存入3维矩阵
end
这个例子假设SpeedVehicle为2维矩阵,我将其存入一个3维矩阵里。
也可以利用其它数据类型,比如结构体,cell。根据SpeedVehicle的类型和你的使用习惯选定数据类型即可。

mathjiang
2008-07-23, 21:32
楼上正解,又学到一招。thanks

maizi816
2008-07-24, 07:34
我的SpeedVehicle数据是timeseries格式(如图)
如果想导入SpeedVehicle里的数据,需要:
data=z(d).SpeedVehicle
这样的格式该怎么写程序?谢谢!

remnant
2008-07-24, 21:39
time series这个属于时间序列的我不了解。不过,可以肯定的是这种数据类型也是由一些
基本数据类型组合而成的。说个思路吧,你自己尝试一下。你可以先load一个mat
文件进来,然后,试一下struct,cell这两种能不能存储SpeedVehicle[ 可以用class( 'SpeedVehicle' ) 来看一下 ]。确定以后,
修改上面的程序,将刚才试验里确定的类型变成多维的就可以了。

maizi816
2008-07-28, 19:14
我试了下,是char 数据类型