问题
%数据存储在chabu_all变量中,导出至fiveaxis.txt文件中
fid = fopen('fiveaxis.txt','at+');
str=['G01 G90 ','X',num2str(chabu_all(1,1)),' Y',num2str(chabu_all(1,2)),' Z',num2str(chabu_all(1,3)),' A',num2str(rad2deg(chabu_all(1,4))),' C',num2str(rad2deg(chabu_all(1,5))),' F',num2str(vc(1)*60)];
fprintf(fid,'%s \n',str);
上述代码输出后,在记事本打开fiveaxis.txt可能会产生如下效果:
G01 G90 X10 Y2e-4 Z0.01 A10.2 C1e-5 F600
这是因为matlab会在小于0.001时自动使用科学计数法,例如数据为0.0001时,matlab输出为1e-4
解决办法
大致思路是给输出数据设置一个精度限制,matlab就不会以科学计数法输出,
将num2str函数替换为char(vpa())即可。
%数据存储在chabu_all变量中,导出至fiveaxis.txt文件中
fid = fopen('fiveaxis.txt','at+');
str=['G01 G90 ','X',char(vpa(chabu_all(1,1)),8),' Y',char(vpa(chabu_all(1,2)),8),' Z',char(vpa(chabu_all(1,3)),8),' A',char(vpa(rad2deg(chabu_all(1,4))),8),' C',char(vpa(rad2deg(chabu_all(1,5))),8),' F',char(vpa(vc(1)*60),8)];
fprintf(fid,'%s \n',str);
这样做的好处是可以将想添加的字符串一起输出到txt文件,dlmwrite函数则稍显麻烦
Solved