2015-07-10 154 views
0

我想從excel中獲取超過17500行的列。現在的問題是,當我在MATLAB中調用它時,它並沒有給我所有數據的整個矩陣。它從中間某處獲取數據。在matlab中從Excel中獲取數據

現在真正的問題是,我必須在列中添加4個數字,並獲得平均值,將它保存在另一列,然後繼續下一組連續的數字,然後重複,直到結束..我該怎麼做在MATLAB中。請幫我解決這個問題,因爲我只是一個菜鳥。謝謝。

到目前爲止,我已經做了是這樣的:

clc 
g=xlsread('Data.xlsx',1,'E1:E17500'); 
x=1; 
for i = 1:(17500/4) %as steps has to be stepped at 4 since we need avg of 4  
     y{i}=((g{x}+g{x+1}+g{x+2}+g{x+3})/4); 
     x=x+4; 
end 
xlswrite('Data.xlsx', y, 1, 'F1:F4375'); 
+0

的'for'循環是不正確。而不是以4的間隔從1到17497迭代「i」,而是以1爲間隔從1到4275進行迭代。將其更改爲「1:4:17500」。 – bcdan

回答

0

我在這裏看到幾件事情:xlsread與一個輸出,讓用戶雙打的數字矩陣(非單元陣列)。因此,您應該使用()而不是{}。當我們使用reshape創建尺寸爲4x4375的矩陣時,for循環可以省略。我們直接用mean(在第一維上評估)計算每列中4個值的平均值。要再次獲得列向量,我們必須使用'轉置mean的結果。

下面是代碼:

g = xlsread('Data.xlsx',1,'E1:E17500'); 
y = mean(reshape(g,4,[]),1)'; 
xlswrite('Data.xlsx',y,1,'F1:F4375'); 

要查看詳細的代碼中會發生什麼,讓我們來看看使用隨機數據的每個步驟的結果爲g

代碼:

rng(4); 
g = randi(10,12,1) 
a = reshape(g,4,[]) 
b = mean(a,1) 
y = b' 

結果:

g = 
    10 
    6 
    10 
    8 
    7 
    3 
    10 
    1 
    3 
    5 
    8 
    2 
a = 
    10  7  3 
    6  3  5 
    10 10  8 
    8  1  2 
b = 
    8.5000 5.2500 4.5000 
y = 
    8.5000 
    5.2500 
    4.5000 
+0

非常感謝您的幫助 – MANI