专栏名称: FQuantStudio
聊量化投资研究、聊MATLAB应用、聊投资理财-…
目录
相关文章推荐
庞门正道  ·  卖秋裤也开始内卷了~ ·  2 天前  
庞门正道  ·  惊掉下巴的航拍,咱这世界是真大啊~ ·  昨天  
庞门正道  ·  天塌了,4000大洋的显示器狗带了! ·  2 天前  
ZaomeDesign  ·  每日灵感丨二月二十三日 ·  2 天前  
纪念币预约信息  ·  开始预约!哪吒羊脂白玉瓷主人杯!超精美! ·  4 天前  
51好读  ›  专栏  ›  FQuantStudio

MATLAB数据保存成其他格式文件(.csv .xlsx .txt等)通用函数【faruto出品】

FQuantStudio  · 知乎专栏  ·  · 2015-07-20 22:12

正文

FQuantToolBox发布后有些网友反应能否将获取的股票等相关数据保存成其他文件格式,当下FQuantToolBox默认的保存格式是.mat文件,可能有的朋友需要存成其他格式(.csv .xlsx .txt等)的文件进行调用,故编写了SaveData2File.m函数,一方面可以结合FQuantToolBox使用,将提取的股票、期货数据保存成您需要的格式,另一方面该函数也可以单独使用,可以将任何MATLAB数据(double型 cell型)快速的保存成其他格式文件(现支持保存成{'.txt','.dat','.csv','.xls','.xlsb','.xlsx','.xlsm'}等扩展名的文件)。

查看FQuantStudio微信公众号历史消息或进入公众号后 输入"FQuantToolBox",可以查看FQuantToolBox相关文件。


SaveData2File.m源码

function [Status, Message] = SaveData2File(Data, FileName, ColNamesCell)
%% SaveData2File
% by LiYang_faruto
% Email:[email protected]
% 2015/05/01
%% 输入输出预处理
Status = 1;
Message = [];
if nargin < 3 || isempty(ColNamesCell)
 ColNamesCell = [];
end
if nargin < 2 || isempty(FileName)
 FileName = 'OutData.xlsx';
end
if nargin < 1 || isempty(Data)
 Status = 0;
 Message = '缺少输入参数,请输入待保存的数据!';
 disp(Message);
 return;
end

% ColNamesCell 处理
[Rlen, Clen] = size(Data);
if ~isempty(ColNamesCell)
 tlen = length(ColNamesCell);
 if tlen < Clen
     for i = tlen+1:Clen
         str = ['VarName',num2str(i)];
         ColNamesCell{i} = str;
     end
 end
 if tlen > Clen
     ColNamesCell = ColNamesCell(1:Clen);
 end
end

% FileName 检查处理
ind = find(FileName == '.', 1,'last');
if isempty(ind)
 FileName = [FileName,'.xlsx'];
 ind = find(FileName == '.', 1,'last');
end
ExtCell = {'.txt','.dat','.csv','.xls','.xlsb','.xlsx','.xlsm'};

ExtName = FileName(ind:end);
if ~ismember(ExtName, ExtCell)
 Status = 0;
 Message = '请检查输入的文件扩展名!(仅支持如下扩展名)';
 disp(Message);
 disp(ExtCell);
 return;    
end
%% Main

switch class( Data )
 case 'double'
     tCell = num2cell(Data);
     if ~isempty( ColNamesCell )
         tCell = [ColNamesCell;tCell];
     end
     Fun = @(x)( num2str(x) );
     tCell = cellfun( Fun,tCell, 'UniformOutput', false);
   
     T = cell2table(tCell);
     writetable(T,FileName,'WriteVariableNames',false);
   
 case 'cell'
     tCell = Data;
     if ~isempty( ColNamesCell )
         tCell = [ColNamesCell;tCell];
     end
     Fun = @(x)( num2str(x) );
     tCell = cellfun( Fun,tCell, 'UniformOutput', false);
   
     T = cell2table(tCell);
     writetable(T,FileName,'WriteVariableNames',false);        
   
 case 'struct'
   
   
   
 otherwise
     Status = 0;
     Message = '输入数据类型未知!请检查!';
     disp(Message);
     return;
end

%% sub fun

测试脚本(测试数据来源,需要配合FQuantToolBox)

%% 获取股票代码列表测试

[StockList,StockListFull] = GetStockList_Web;
StockCodeDouble = cell2mat( StockList(:,3) );
save('StockList','StockList');

%% StockList SaveData2File
tic;
Data = StockList;

FileName = 'StockList.csv';
ColNamesCell = {'股票名称','股票代码','股票代码(纯数字)'};

[Status, Message] = SaveData2File(Data, FileName, ColNamesCell);

Data = StockList;

FileName = 'StockList.txt';
ColNamesCell = {'股票名称','股票代码','股票代码(纯数字)'};

[Status, Message] = SaveData2File(Data, FileName, ColNamesCell);
toc;
%% 获取指数代码列表

[IndexList] = GetIndexList_Web;

save('IndexList','IndexList');

%% IndexList SaveData2File
tic;
Data = IndexList;

FileName = 'IndexList.csv';
ColNamesCell = {'名称'






请到「今天看啥」查看全文