2013-06-24 44 views
1

我已經加載了某些數組在matlab中,我想採取的手段和東西,但我的問題是'M'這是一個變量(它是在我已附加的代碼)被視爲char而不是數組(實際上是)。如何利用M,數組而不是M,charmatlab - 需要加載文件的文件名存儲在一個變量

kk=[]; 
files = dir('*.dat'); 
for i=1:length(files) 
    eval(['load ' files(i).name]) 
    M=files(i).name; 
    load(M) 
    p=mean(M,2); 
    kk=[kk p]; 
end 
mn= mean(kk,2); 
+0

你試過'負載(M(:))'或'負載(M(:)')'?此外,「eval」系列還有什麼值得注意的地方,或者是你想要擺脫的是什麼? – Dan

+0

請參閱[這個問題](http://stackoverflow.com/questions/17030172/load-multiple-mat-files-for-processing) - 它非常相似。 – user2469775

回答

2

幾點意見:

  1. 您可以load到變量M,而不是如果要計算所有數字的mean指定的文件名M

    >> M = load(files(ii).name); % load the file into a matrix M 
    
  2. 存儲在所有文件中,那麼mean([mean(M1,2) mean(M2,2) ...])不一定是mean w你想要的帽子。
    如果在不同矩陣中有不同數量的列,那麼您不計算所需的量。 確保您正在計算正確您想要購買的數量

  3. 不要使用eval:這是不必要的,使代碼難以閱讀,難以維護和調試。

  4. 不要在循環內部生長數組:kk = [kk p];。這種行爲殺死 Matlab的性能,因爲它需要在每次迭代時重新分配kk。在循環之前預先分配kk所需的內存 - 您將看到顯着的加速。在Matlab中,it is best not to use i as a variable name

相關問題