我写了一个完整的脚本程序,可以贴上来。
因为没实际的数据集验证,我也不能保证程序是对的。使用MATLAB,合适地调整数据,管理数据,是使用MATLAB前,一个非常重要的事项。
你的数据结构内容我不了解,这个真的无法做,我做了一个大致的程序,其实你的错误提示语句说,要写入excel,最好是 数值型,cell类型,和 逻辑型。
程序里的 okay,就是xlswrithe 函数能返回的一个参数,这个是逻辑值,1-代表写入成功,0-代表写入失败。
程序如下,顺便将原文件的.txt文本上传为附件,可以根据你的数据,调整变量名后试下,因为我没数据测试,从编程时的提示看,没有打的语法硬伤,不过能通过测试不,需要通过数据带入检验,这个就是 debug 过程。
- %% 将 *.mat 格式的数据存储为 *.xls 格式的文件数据
- % 脚本文件名为: Inputdata2excel.m
- % 读入*.mat 数据
- a=load('mydata.mat'); % 数据格式为 structure
- %% 将结构的变量名转变为将用于存储数据的excel表格的sheetname
- % 设置sheetname
- sheetname=a.VarName; % sheetname 一定得确保是字符型
- % 将结构中的数据读出,一个是直接读出,也可以用 strct2cell,将结构转变为cell
- % 方法1: 直接独处结构的内容
- Datas=a.Var;
- % 方法2: 用cell
- tempCell=struct2cell(a);
- %% 这里主要用方法1 做转换存储
- % 为了便于将巨大的数据矩阵放入excle,比如本里的 4000*10000,将列缩小
- [outIter,inIter]=size(Datas);
- inIter=inIter./200;
- outIter=outIter./1000;
- for i=1:outIter
- ObjectExcel={'ObjectExcel',num2str(outIter),'.xls'};
- for s=1:initer
- % 下一句中的数据行,列设置,[] 这个括号是可以不要的,是为了清晰数据花去而设定
- tempData=Datas([(outIter-1)*1000+1:outIter*1000],[(inItet-1)*200+1:inIter*200]);
- % 设置用余被eval调用的字符串
- tempstr={'okay=','xlswrite(',ObjectExcel,',','tempData'',',sheetname,')'};
- % 用evar
- % 语句将字符串执行,okay=xlswrite('ObjecExcel_outIter.xls',tempData,'sheetname');
- eval(tempstr);
- % 用屏幕输出语句fprintf输出okay的逻辑值,值为:1 ,代表写excel文件成功
- fprintf(1,'The data write to excel logical okay is: %c /n',okay);
- end
- end
- %% 结束文件
- fprintf(1,'Excel 文件写入完毕')
复制代码