目的
每个excel有几十万条数据,要求是每一列做一个归一化,手动肯定是不得行的,所以MATLAB上线
代码长这个亚子
下面展示一些 内联代码片
。
filename = 'aum_m7.csv';
M = xlsread(filename);
[a,b]=size(M) %返回矩阵行a列b
Z=zeros(a,b);
for i = 1:b
B=M(:,i)'; %取列,转置
M1=mapminmax(B,0,1); %0-1归一化
Z(:,i)=M1'; %转回去x
end
Z
sheet=3;
xlswrite('aum_m7.csv',Z,sheet)
tips
1.csv的后缀文件用xlsread不用csvread是基操
2.mapminmax默认是对一行进行归一化,所以需要转置
3.xlswrite!!!!!!!传统美德!!!!贼恶心
xlswrite
最开始会报错
我把百度来的方法都试过了,就离谱!!!!
csvwrite/writetable/writematrix更不行
离谱!!!!!!!!
解决方法是(点添加连接描述直接跳转)
添加链接描述
(我是wps和office都有,且默认为wps)
wps加载项行不通。
excel右键,属性,打开方式那里选更改,选择Microsoft excel。
然后打开excel,选择“文件”,选项,加载项,“管理”那里选择com加载项(默认为excel加载项),转到,可用加载项全勾上,确定,关闭所有excel,包括word(我第一次只关了所有的excel没成功,第二次关了word之类的成功了),重启matlab再次运行
就!可!以!了!ohhhhhhhhhhhh!!!!!!!!!!
一个下午+晚上就几行代码,离谱
后续
我又又来了,隔了一天再运行代码,开了个小的csv想看看结果,发现xlsread读不出csv
已解决,因为relll我是xls格式,另存为csv后完全欧克,跑出来的结果没有任何问题,但是我想写在sheet3的想法失败了,如果是xlswrite(‘relll’,Z)会另存为xlsx文件,如果是xlswrite(‘relll.csv’,Z)会直接覆盖原来的数据
换成前天一模一样的代码
啊,我佛了,我再试试
解决了,最后一句xlswrite(aum_m7.xlsx,Z)即可,会另存为xlsx