将Excel文件中的加速度计数据提取到MATLAB中

时间:2013-03-06 17:32:36

标签: excel matlab loops accelerometer

我试过搜索但是我的特殊问题没有找到。我应该提一下,我对MATLAB还是比较陌生的,所以这可能是显而易见的,但已经让我头晕目眩。

我有一个Excel文件,加速计记录了5个事件,中间有一些空格。这些事件有时会发生(即行),例如120:250,280:390,430:943等等。

我想要做的是能够循环并提取所需的数据,并将其存储在变量中,以便每个事件都有自己的“部分”,如果你愿意,每个“部分”都包含它是一组带有X,Y,Z加速度计数据的“子部分”。

我目前的设置是手动设置,它看起来像这样:

X1 = xlsread('location.xlsx','sheet1','d110:d367');
X2 = xlsread('location.xlsx','sheet1','d367:d631');
X3 = xlsread('location.xlsx','sheet1','d631:d891');
X4 = xlsread('location.xlsx','sheet1','d891:d1134');
X5 = xlsread('location.xlsx','sheet1','d1134:d1361');

Y1 = xlsread('location.xlsx','sheet1','e110:e367');
Y2 = xlsread('location.xlsx','sheet1','e367:e631');
Y3 = xlsread('location.xlsx','sheet1','e631:e891');
Y4 = xlsread('location.xlsx','sheet1','E891:e1134');
Y5 = xlsread('location.xlsx','sheet1','e1134:e1361');

Z1 = xlsread('location.xlsx','sheet1','f110:f367');
Z2 = xlsread('location.xlsx','sheet1','f367:f631');
Z3 = xlsread('location.xlsx','sheet1','f631:f891');
Z4 = xlsread('location.xlsx','sheet1','f891:f1134');
Z5 = xlsread('location.xlsx','sheet1','f1134:f1361');

所以你可以看到它是如何不利的。我想做的另一件事是最终使用循环与其他数据集进行交叉关联,但在处理“动态”变量或者你有什么时,我不确定循环的性质。

现在,我正在考虑这样做的方式是我在向量中指定行块或类似的东西,并为每个活动循环,然后循环每个轴。

1 个答案:

答案 0 :(得分:0)

为每个变量运行XLSREAD;对于性能而言,这是最佳选择。此功能使用COM接口(至少在Windows下)和慢速。如果数据不是很大并且可以放入内存中,最好立即将整个工作表读入临时变量,然后将值排序为变量。

另一个建议是不要使用X1,X2等。如果你想在循环中使用这些变量,你会遇到问题。如果它们具有不同的长度,则创建一个单元格数组,因此它们将变为X {1},X {2}等。

所以,首先阅读整个文件:

data = xlsread('location.xlsx','sheet1','D:F');

如果您对所有数字进行数据处理,则会在data矩阵中获取它们。

您可以手动输入或从数据中获取的索引。

index = {120:250, 280:390, 430:943};
for ii = 1:numel(index)
    X{ii} = data(index{ii},1);
    Y{ii} = data(index{ii},2);
    Z{ii} = data(index{ii},3);
end