关于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
我想将第一列和第二列数据变为整数,怎么解决哈
展开
 我来答
花里有画人生D
2014-02-21 · TA获得超过1679个赞
知道小有建树答主
回答量:226
采纳率:0%
帮助的人:437万
展开全部
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位。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
AliKsai
2014-02-21 · TA获得超过123个赞
知道答主
回答量:32
采纳率:0%
帮助的人:29.4万
展开全部
以下代码运行:
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
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式