2011-09-16 24 views
2

這是我想要做的一個例子:閱讀MATLAB一個CSV文件並使其2-d

我有一個CSV文件:

1,200,3,500... 

2,400,4,600... 

數據是成對的,即有交替的數值x,y,x,y&hellip ;.

我想採取這個輸入,並做出矩陣值爲m = x – y 2d矩陣。輸出應採用x,y,m,x,y,m等三元組的CSV格式。任何幫助表示讚賞。

回答

0

這不是一個問題:

data = importdata('file.csv'); 
x = data(1:2:end); //number in the middle means you take every second sample 
y = data(2:2:end); 
m = x - y; 

現在輸出:

output_data = [x;y;m]; 
output_data = output_data(:); 
csvwrite ('output.csv' , output_data); 
+0

感謝。但我想要奇數列的x和甚至列的y。這段代碼沒有這樣做。 – user523542

1

通過@VladimirPerković該解決方案必須正確的想法。讓我解決一些小問題:

%# read CSV file 
data = csvread('file.csv'); 
[r c] = size(data); 

%# create output matrix 
out = zeros(r,c/2*3); 
out(:,1:3:end) = data(:,1:2:end); 
out(:,2:3:end) = data(:,2:2:end); 
out(:,3:3:end) = data(:,1:2:end) - data(:,2:2:end) 

%# save as CSV file 
csvwrite('out.csv', out) 

創建的輸出文件:

1,200,-199,3,500,-497,1,200,-199,3,500,-497 
2,400,-398,4,600,-596,2,400,-398,4,600,-596 
1,200,-199,3,500,-497,1,200,-199,3,500,-497 
2,400,-398,4,600,-596,2,400,-398,4,600,-596