在Matlab中连接数组并使用dlmwrite()写入文件会增加额外的空间

时间:2017-09-04 07:12:40

标签: matlab

我使用下面的代码在matlab中以格式(time,heart_rate,resp_rate)生成2500个值

 numberOfSeconds = 2500;
 time = 1:numberOfSeconds;
 newTime = transpose(time);
 number0 = size(newTime, 1)


 %   generating heart rates 
heart_rate = 50 +(70-50) * rand (numberOfSeconds,1);
intHeartRate = int64(heart_rate);
number1 = size(intHeartRate, 1)
% hist(heart_rate)


 %   generating resp rates 
resp_rate = 50 +(70-50) * rand (numberOfSeconds,1);
intRespRate = int64(resp_rate);
number2 = size(intRespRate, 1)
% hist(heart_rate)


% joining time and sensor data
 joinedStream = strcat(num2str(newTime),{','},num2str(intHeartRate),{','},num2str(intRespRate))

 dlmwrite('/Users/amar/Desktop/geenrated/rate.txt', joinedStream,'delimiter','');

控制台中显示的数据没问题,但是当我将此数据保存到.txt文件时,它在开头包含额外的空格。因此,我无法解析.txt文件以生成输入流。请帮忙

2 个答案:

答案 0 :(得分:2)

使用以下内容替换代码的最后两行。如果您想要CSV输出文件,则无需使用strcat。

{{1}}

答案 1 :(得分:2)

ℎ。 ℎℎℎ。

文件中写入的数据正是控制台中显示的内容。

>> joinedStream(1)   %The exact output will differ since 'rand' is used

ans =
  cell

    '   1,60,63'

num2str基本上将矩阵转换为字符数组。因此,每行中的字符数必须相同。因此,对于原始矩阵的每一列,具有最大字符数的行被设置为具有较少字符的所有行的标准,并且缺陷由空格填充。列由2个空格分隔。看一下以下较小的例子来理解:

>> num2str([44, 42314; 4, 1212421])

ans =
  2×11 char array

    '44    42314'
    ' 4  1212421'