2013-10-04 85 views
0

一列是我有22列的單元陣列。我想通過在單元陣列讀取和其分離爲根據第2列(該網站以字符串格式)不同.MAT文件。基本上,這些數據來自紐約各地的一年的信息。我想單獨保存每個站點的數據(查找具有相同列2的行並保存它們)。MATLAB保存.MAT文件分成較小的文件,基於共同

我還想將.mat文件轉換爲netcdf文件,以便不使用MATLAB的人也可以讀取它,但首先,我只需要能夠分開單元格數組而無需手動查找每個特定的字符串並保存。

的數據是這樣的文件:https://www.dropbox.com/sh/li3hh1nvt11vok5/4YGfwStQlo

我使用這個腳本文件中讀取,然後按照日期排序它(第1列):

filename = ('PM2.5_NY_2012.csv'); % PM2.5 88101 data from NY in the year 2012 

% Use functions created by read_mixed_csv.m to read in 
data = read_mixed_csv(filename,','); % Creates cell array of data 
data = regexprep(data, '^"|"$',''); % Gets rid of double quotes at the start and end of the string 

% Sort data based on date (Column 1) 
[Y,I] = sort(data(:,1)); % Create 1st column sorted 
site_sorted = data(I,:); % Sort the entire array 

所以,現在它是一個單元陣列。如何將具有相同第二列的所有數據保存到不同的文件中?會使用「獨特」還是「發現」有用?我知道如何通過搜索特定字符串並保存所有具有該字符串這樣做,但因爲有很多的網站,是有辦法來自動執行此?

將使用唯一使文件名列表,然後循環通過創建使用該列表的工作文件?我對編程還比較陌生,所以我不知道我能做什麼。

+0

第二列是一切爲您發佈的數據相同的值。你的意思是像「36-061-0079」或其他專欄的價值? – chappjc

+0

抱歉。我沒有提供正確的文件。請再試一次。我的意思是第二欄。新文件應該有不同的值。 – shizishan

回答

1
filename = ('PM2.5_NY_2012.csv'); % PM2.5 88101 data from NY in the year 2012 

% Use functions created by read_mixed_csv.m to read in 
data = read_mixed_csv(filename,','); % Creates cell array of data 
data = regexprep(data, '^"|"$',''); % Gets rid of double quotes at the start and end of the string 

% Sort data based on date (Column 1) 
[Y,I] = sort(data(:,1)); % Create 1st column sorted 
site_sorted = data(I,:); % Sort the entire array 

u_id=unique(site_sorted(:,2)); % get unique id 

for i=1:length(u_id) 
    idx=ismember(site_sorted(:,2),u_id{i}); % extract index where the second column matches the current id value 
    site_data = site_sorted(idx,:); 
    save([u_id{i} '.mat'],'site_data'); 
end 

這應該做到嗎?

相關問題