关于matlab中的数据txt输出指数变为整数
A=[--];A数组很大[m,n,data]=find(A);dst=[m,n,data];dstsavedata.txt-asciidst例如输出生成txt保存内容为:...
A=[--];A数组很大
[m,n,data]=find(A);
dst=[m,n,data];
dst
save data.txt -ascii dst
例如输出
生成txt保存内容为:
1.0000000e+000 1.0000000e+000 2.1000000e+001
2.0000000e+000 1.0000000e+000 4.0000000e+000
1.0000000e+000 2.0000000e+000 4.2000000e+001
2.0000000e+000 2.0000000e+000 5.0000000e+000
我想将第一列和第二列数据变为整数,怎么解决哈 展开
[m,n,data]=find(A);
dst=[m,n,data];
dst
save data.txt -ascii dst
例如输出
生成txt保存内容为:
1.0000000e+000 1.0000000e+000 2.1000000e+001
2.0000000e+000 1.0000000e+000 4.0000000e+000
1.0000000e+000 2.0000000e+000 4.2000000e+001
2.0000000e+000 2.0000000e+000 5.0000000e+000
我想将第一列和第二列数据变为整数,怎么解决哈 展开
4个回答
展开全部
A=[];
[m,n]=size(A);
z=1;
for i=1:m
for k=1:n
B(z,:)=[i k A(i,k)];
z=z+1;
end
end
fid=fopen('data.txt','wt');%wt是以文本方式写入data.txt
[m,n]=size(B);
for i=1:m
for j=1:n
if j==n
fprintf(fid,'%e\n',B(i,j));% %e 科学技术法输出,\n换行
else
fprintf(fid,'%d\t',B(i,j));% \t空格
end
end
end
fclose(fid);%关闭文件
更多追问追答
追问
这个和上次我问你的有点差别了,按原来的存放数据是反的,我是按下面程序输出的
[m,n,data]=find(A);
dst=[m-1,n-1,data];
dst
save data.txt -ascii dst
输出格式是提问那样的,左边2列是像素坐标,我想将前二列变为整数,第三列不用变,还是得放进txt中。要得前二列格式如下
0 0
1 0
2 0
0 1
1 1
2 1
追答
你的意思是按照列数往下排,即先列出第一列接着列第二列。
A=[ ];
[m,n,data]=find(A);
dst=[m,n,data];
dst(:,1:2)=dst(:,1:2)-1;%你写的这一行dst=[m-1,n-1,data]可以替代上两行。
fid=fopen('data.txt','wt');%wt是以文本方式写入data.txt
[x,y]=size(dst);
for i=1:x
for j=1:y
if j==y
fprintf(fid,'%e\n',dst(i,j));% %e 科学技术法输出,\n换行
else
fprintf(fid,'%d\t',dst(i,j));% \t空格
end
end
end
fclose(fid);%关闭文件
参考AliKsai代码,中间的最大的for循环可以换成:
fid=fopen('data.txt','wt');
fprintf(fid,'%d %d %e\n',dst');
fclose(fid);
最简化的程序:
A=[];
[m,n,data]=find(A);
dst=[m-1,n-1,data];
fid=fopen('data.txt','wt');
fprintf(fid,'%d %d %e\n',dst');
fclose(fid);
来自:求助得到的回答
2014-02-21
展开全部
save命令为了尽量保持精度,使用科学记数法的格式保存。
如果想要前两列为整数,可以考虑使用fprintf函数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2014-02-25
展开全部
dlmwrite('filename.txt',filename, 'delimiter',' ','precision','%.9f')
使用上述函数dlmwrite,delimiter是数据间以什么分隔,precision后控制精度,例子中保存了小数点后9位。
使用上述函数dlmwrite,delimiter是数据间以什么分隔,precision后控制精度,例子中保存了小数点后9位。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
以下代码运行:
clc
clear all
close all
m=[1;2;1;2]
n=[1;1;2;2];
data=[21;4;42;5];
dst=[m,n,data];
dst
fid=fopen('datasave4.txt','a');
fprintf(fid,'%i %i %e\n',dst');
fclose(fid);
得到结果:
1 1 2.100000e+01
2 1 4.000000e+00
1 2 4.200000e+01
2 2 5.000000e+00
clc
clear all
close all
m=[1;2;1;2]
n=[1;1;2;2];
data=[21;4;42;5];
dst=[m,n,data];
dst
fid=fopen('datasave4.txt','a');
fprintf(fid,'%i %i %e\n',dst');
fclose(fid);
得到结果:
1 1 2.100000e+01
2 1 4.000000e+00
1 2 4.200000e+01
2 2 5.000000e+00
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询