liuyang5299 发表于 2012-8-27 21:31:50

保存为txt文件为什么总是只有一列,原数组是两列

本帖最后由 liuyang5299 于 2012-8-27 21:33 编辑

我用的是这个命令
原数组是8200*2,
for i=1:2:144    Tmp=C(:,i:i+1);
    str= ['f1 - 副本 (' num2str((i+1)/2) ').txt'];
fid=fopen(str,'w');
fprintf(fid,'\%6.4f\n ',Tmp);
fclose(fid);
end
我怀疑是fprintf用法的问题,请问正确的是怎么样的?

ithinksoim 发表于 2012-8-27 21:31:51

你这个C是8200*2还是2*8200?
如果是8200*2的话,Tmp = C(:,i:i+1)这里会越界吧>> C = zeros(8200,2);
>> C(:,3:4)
Index exceeds matrix dimensions.下面我假设你这个C是2*8200,你应该把:fprintf(fid,'\%6.4f\n ',Tmp);改成:fprintf(fid,'%6.4f,%6.4f\n ',Tmp);

liuyang5299 发表于 2012-8-28 10:30:29

ithinksoim 发表于 2012-8-28 07:51 static/image/common/back.gif
你这个C是8200*2还是2*8200?
如果是8200*2的话,Tmp = C(:,i:i+1)这里会越界吧下面我假设你这个C是2*8200 ...

那么C是8200*2呢

ithinksoim 发表于 2012-8-28 10:51:40

本帖最后由 ithinksoim 于 2012-8-28 10:52 编辑

liuyang5299 发表于 2012-8-28 10:30 static/image/common/back.gif
那么C是8200*2呢
那就还得把Tmp=C(:,i:i+1);改成Tmp=C(i:i+1,:);

liuyang5299 发表于 2012-8-28 16:58:58

ithinksoim 发表于 2012-8-28 10:51 static/image/common/back.gif
那就还得把Tmp=C(:,i:i+1);改成

假如 我想保存为txt为两列,原数组为8200*4.保存为两个txt文件,每一个是8200*2

for i=1:2
    Tmp=C(:,i:i+1);
    str= ['f1 - 副本 (' num2str(i) ').txt'];
fid=fopen(str,'w');
fprintf(fid,'\%6.4f\n ',Tmp);
fclose(fid);
end
不对吗?

lovebaby 发表于 2012-8-28 19:15:03

liuyang5299 发表于 2012-8-28 16:58 static/image/common/back.gif
假如 我想保存为txt为两列,原数组为8200*4.保存为两个txt文件,每一个是8200*2

for i=1:2


不对,你要注意,多少列不取决于你这个Tmp里有多少列,而是取决于fprintf(fid,'%6.4f\n ',Tmp)的格式化字符串%6.4f\n里面有多少个元素。所以你应该写成:fprintf(fid,'%6.4f,%6.4f\n ',Tmp)

liuyang5299 发表于 2012-8-29 15:11:40

lovebaby 发表于 2012-8-28 19:15 static/image/common/back.gif
不对,你要注意,多少列不取决于你这个Tmp里有多少列,而是取决于的格式化字符串%6.4f\n里面有多少个元素 ...

比如说temp是
1 23
4 56
fprintf(fid,'%6.4f,%6.4f\n ',Tmp)
输出的原则是什么
我之前试了一下
比如我的数组为8200*214,保存为72个txt文件,每一个文件为8200*3,其中文件第2列均为逗号,对应数值代码为44,如何循环保存为逗号,我的程序为
C=zeros(8200,216);
for i=1:3:214
    Tmp=C(i:i+2,:);
    str= ['f1 - 副本 (' num2str((i-1)/3+1) ').dbs'];
fid=fopen(str,'w');
fprintf(fid,'%f %s %f\n ',Tmp);
fclose(fid);
end
发现有些文件的数据很混乱
页: [1]
查看完整版本: 保存为txt文件为什么总是只有一列,原数组是两列