2013-03-06 74 views
0

我嘗試過搜索,但發現我的特殊問題。我應該提到我對MATLAB很新,所以這可能是很明顯的,但是已經滑過我的腦海。將Excel文件中的加速度計數據提取到MATLAB中

我有一個Excel文件,其中包含5個事件的加速度計記錄,其間有一些空間。這些事件發生在我必須指定的時間(即行),如120:250,280:390,430:943等等。

我想要做的是能夠遍歷並提取所需的數據,並將其存儲在變量中,以便每個事件都有它自己的'section',如果你願意的話,每個'section'都會包含它自己的一套'小節'與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'); 

所以,你可以看到它是不利的。我想要做的另一件事是最終使用循環與其他數據集進行交叉關聯,但是在處理「動態」變量或您有什麼時,我不確定循環的本質。

現在我正在考慮這樣做的方式是指定向量中的行塊或類似的東西,並循環遍歷每個活動,然後每個軸。

+0

您會考慮通讀嗎?我碰巧自己寫這篇文章。但是我找不到任何可以幫助的其他文章。 http://www.codeproject.com/Tips/536002/Read-an-Excel-File-through-Matlab如果您仍然有疑問,請發表評論 – Kiran 2013-03-06 17:38:01

回答

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 
+0

這很好,謝謝!現在,我只需要找出如何在循環時打印索引{ii}變量名稱:p再次感謝......我一直在摸索着這個比我應該擁有的時間長得多的頭。 – Steven 2013-03-07 13:45:59

相關問題