我有大量的数据矩阵,看起来像这样:
DataOut' = [34 1 0.0 -4.75343000000000 0.0291776000000000 5.32835000000000 1.23598000000000 0.890008000000000;
7 1 0.0902364000000000 -4.74065000000000 0.0 1.97133000000000 9.49706000000000 16.1658000000000]
前两列是ID,总是整数,其余6列是每对相应ID的2对(X,Y,Z)坐标(浮点数)。
我使用以下语法将数据写入文件:
fprintf(' %u %u %-6.12g %-6.12g %-6.12g %-6.12g %-6.12g %-6.12g \r\n', DataOut)
>> 34 1 0 -4.75343 0.0291776 5.32835 1.23598 0.890008
7 1 0.0902364 -4.74065 0 1.97133 9.49706 16.1658
这种格式在几乎所有情况下都很好,除了上面强调的那个,其中无效的尾随零被空格替换,导致某些列之间的间隙很大而不是单个空格。读取这些数据的软件在发现超过预期的数据时,确实不喜欢所有这些空格和中断。
我想要的输出是每列之间只有一个空格:
>> 34 1 0 -4.75343 0.0291776 5.32835 1.23598 0.890008
7 1 0.0902364 -4.74065 0 1.97133 9.49706 16.1658
有没有人知道如何获取fprintf在删除无效的尾随零后留下一个空格?使用fprintf是很好的,因为我不需要任何循环,当你有几千个这样的矩阵被写出来时,如果我不得不在循环中进行一些检查,那我会觉得很慢?
答案 0 :(得分:0)
您用于浮点数(xhr.setRequestHeader('X-Mashape-Key', 'KEY');
//xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
xhr.setRequestHeader('Authorization', 'Client-ID ID');
xhr.onload = function (data) {
var response = JSON.parse(xhr.responseText);
if (response && response.data && response.data.link) {
response = response.data.link.replace(/^http:\/\//i, 'https://');
var img = new Image();
img.src = response;
// check dimensions - 2000 x 400 ideal
img.onload = function () {
successCallback(response);
};
} else {
if (failCallback) {
failCallback();
}
}
imageService.loadComplete();
};
xhr.send(fd);
)物种的格式规范,您要删除不重要的尾随零(小数点后最多12个数字)。但是,%-6.12g
指定您希望每个字段至少 6个字符宽。对于-6
,它的宽度为1,因此0
将其填充为6个字符宽(因此所有空格)。如果您只是从每个格式说明符的开头删除fprintf
,您将获得所需的输出。
-6