我有一个列矩阵说temp1,浮点数采用以下格式(使用格式long g以这种方式显示):
1334320224.86767
1334320225.03415
1334320225.20064
和另一个nx3矩阵(temp2),其值如下:
25.59989 -17.82167 31.19241
25.17558 -17.59459 30.71448
25.18788 -17.39987 30.61347
我按列顺序连接2个矩阵,temp = [temp1 temp2]; 得到的矩阵是:
1.334305e+09 24.40084 -17.98591 30.31327
1.334305e+09 24.23554 -17.68831 30.00396
1.334305e+09 25.31328 -17.61529 30.83927
我希望生成的矩阵具有temp1的原始精度。我该怎么做呢?我已经尝试过格式长g。使用dlmwrite写入文件并将精度设置为%.5f会导致第一列的小数部分归零。
答案 0 :(得分:1)
首先,格式长g为我工作。我在mac上使用Matlab_R2013a:
>> temp = [temp1 temp2]
temp =
1334320224.86767 25.59989 -17.82167 31.19241
1334320225.03415 25.17558 -17.59459 30.71448
1334320225.20064 25.18788 -17.39987 30.61347
但是一个简单的解决方案:sprintf('%f ',temp)
,它将失去矩阵看起来像格式,但你将能够看到你想要的。输出:
>> sprintf('%f ',temp)
ans =
1334320224.867670 1334320225.034150 1334320225.200640 25.599890 25.175580 25.187880 -17.821670 -17.594590 -17.399870 31.192410 30.714480 30.613470
如果你真的需要看到你指出的那样你可能会这样做:
>> arrayfun(@(in) sprintf('%f',in),temp,'Uniform',0)
ans =
'1334320224.867670' '25.599890' '-17.821670' '31.192410'
'1334320225.034150' '25.175580' '-17.594590' '30.714480'
'1334320225.200640' '25.187880' '-17.399870' '30.613470'