2015-06-17 103 views
0

我想將mean_2 .... mean_8,std_2 .... std_8和coVariance作爲文件中的單獨列存儲。請幫助?Matlab:寫入文件

本準則計算的ERP信號的IntervalFeatures 256時間幀 ,並繪製它們 數據點是存儲在一個

___________HowTheCodeWorks________________________________________________

每1×4滑動子矩陣由列 爲例如: - 如果A是1x6,您將得到1-2-3-4,2-3-4-5,3-4-5-6,每列爲 ,結尾爲3列。爲1×10矩陣,你會得到7列

計算每列

減去相應列 終於逐元素平方的平均值列的每個值的平均值,平均每列的 然後以元素爲單位的sqrt來獲得輸出。

A=firstElec; 

%___________Length2_____________________ 
reshaped_2 = im2col(A,[1 2],'sliding'); 
mean_2 = mean(reshaped_2); 
out1 = bsxfun(@minus,reshaped_2,mean_2); 
std_2 = sqrt(mean(out1.^2)) 

%___________Length4_____________________ 
reshaped_4 = im2col(A,[1 4],'sliding'); 
mean_4 = mean(reshaped_4); 
out2 = bsxfun(@minus,reshaped_4,mean_4); 
std_4 = sqrt(mean(out2.^2)) 

%___________Length8_____________________ 
reshaped_8 = im2col(A,[1 8],'sliding'); 
mean_8 = mean(reshaped_8); 
out3 = bsxfun(@minus,reshaped_8,mean_8); 
std_8 = sqrt(mean(out3.^2)) 

%___________CoVariance__________________ 
begInt = 1; 
endInt =256; 
l=endInt - begInt + 1; 
arrayCovar = zeros(1,257); 
j=1; 
for k=1:256 

coVar = 1/l *((A(k)*k) - (mean(A(k:j))*((begInt + endInt)/2))); 
j= 1+k; 
arrayCovar(k)=coVar; 
end 

coVariance = arrayCovar(:,1:256); 
disp(coVariance) 

回答

1

如果你想讓矩陣顯示在每一列中,這將是醜陋的。如果我正確解釋你的請求,你將連接行向量,使它們顯示爲一行。這看起來很糟糕。

我建議你做的是將它們分開,這樣每行矢量就是按行分開的。使用dlmwrite爲:

dlmwrite('data.txt', mean_2); 
dlmwrite('data.txt', ' ', '-append'); 
dlmwrite('data.txt', mean_4, '-append'); 
dlmwrite('data.txt', ' ', '-append'); 
dlmwrite('data.txt', mean_8, '-append'); 
dlmwrite('data.txt', ' ', '-append'); 
dlmwrite('data.txt', std_2, '-append'); 
dlmwrite('data.txt', ' ', '-append'); 
dlmwrite('data.txt', std_4, '-append'); 
dlmwrite('data.txt', ' ', '-append'); 
dlmwrite('data.txt', std_8, '-append'); 
dlmwrite('data.txt', ' ', '-append'); 
dlmwrite('data.txt', coVariance, '-append'); 
+0

但我希望他們作爲列? –

+0

@HarshSharma - 這將是醜陋的。每個矩陣有不同數量的行,所以我不得不循環並製作一些非常難看的代碼。我建議使用'dlmwrite'並按行分隔每個矩陣。看我的編輯。 – rayryeng

+0

@HarshSharma - 但是......如果你真的想把每個矩陣放在不同的列中,我們可以做到這一點。 – rayryeng

0

使用以下函數(使用x = Cellify(mean_2, mean_4, mean_8, ...);)然後轉換向量到單個細胞,使用該函數優良(cell2csv)寫入到文件中。

function x = Cellify(varargin) 
    maxSize = [0, 0]; 
    totalSize = [0, 0]; 

    for i = 1:nargin 
     maxSize = max([maxSize; size(varargin{i})]); 
     totalSize = sum([totalSize; size(varargin{i})]); 
    end 

    x = cell(maxSize(1), totalSize(2)); 

    columnShift = 0; 

    for i = 1:nargin 
     x(1:size(varargin{i}, 1), 1+columnShift:size(varargin{i}, 2)+columnShift) = num2cell(varargin{i}); 
     columnShift = size(varargin{i}, 2); 
    end 
end