A=xlsread('hz.xls'); B=[]; C=[]; counter=1; temp=[]; flag1=0; for i=1:1:length(A) temp1=A(i); if temp1>0 flag1=1; end temp=[temp,temp1]; if temp1==0 && flag1==1 B(:,counter)=temp; temp=[]; counter=counter+1; end end 想将一列Excel数据按条件分段储存到一个矩阵中,运行以上代码报错 |
2019-4-12 19:59 上传
点击文件名下载附件
73.5 KB, 下载次数: 2
WarnerChang 发表于 2019-4-13 10:11 我想以0值为分割点将Excel表格数据分割成片段(数据片段首位都为零中间不为零),每个片段为一列储存到矩阵中然后在写入到一个新的Excel表, |
Djc593367339 发表于 2019-4-13 11:34 A=xlsread('hz.xls'); index=find(A==0); newindex=diff(index); ind=find(newindex~=1); B=cell(length(ind),1); for ii=1:length(ind) B(ii,1)={A(index(ind(ii)):index(ind(ii))+newindex(ind(ii)))}; end 这样就可以实现你的要求啦; 使用B{ii,1}就可以调用第ii列的数据 编码不易,望给个最佳答案,你的支持是我的动力! |
WarnerChang 发表于 2019-4-13 13:31 非常感谢大神的解答,按你给的代码数据片段是分好了,B中的数据片段如何按列依次写入新的Excel表格(第一个片段写入第一列第二个片段写入第二列以此类推)。小白刚接触matlab还不太会。如果用xlswrite写的话用什么命令能够使得Excel列坐标一次递增。 |
Djc593367339 发表于 2019-4-13 15:45 你是一定要写在一个Excel中吗? |
WarnerChang 发表于 2019-4-13 15:54 对的所有分好的数据片段都写入一个Excel按列区分片段 |
Djc593367339 发表于 2019-4-13 16:01 噢噢,我试试哈 |
Djc593367339 发表于 2019-4-13 16:01 应该是不行,我尝试了很多,没有简便的方法 |
WarnerChang 发表于 2019-4-13 17:44 还是要感谢你耐心的解答 |
Djc593367339 发表于 2019-4-14 09:59 昨天想到了一个方法,你可以先利用一个循环,将元胞数组的每个元素转化为列向量,最后合成一个大矩阵,输出就好了,昨天网费没及时交,断网了,没逛论坛,不好意思哈 |
WarnerChang 发表于 2019-4-15 09:28 好的 好的 我试试 没想到你还一直在思考这个问题 非常感谢 我暂时直接用单元数组处理数据 就不导出到Excel处理数据了 最近老板催的紧 要结果 也没怎么逛论坛 没能及时看到你的回复 抱歉 |
Djc593367339 发表于 2019-4-21 16:29 哈哈,一起思考,一起进步! |
Powered by Discuz! X3.4
© 2001-2024