-1

我有一个列矩阵,说 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 的原始精度。我该怎么做呢?我已经尝试过格式化 long g。写入 dlmwrite 且精度设置为 %.5f 的文件会导致第一列的小数部分归零。

4

1 回答 1

1

首先,格式 long 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'
于 2013-08-23T06:04:27.333 回答