八度-将数字字符串从CSV导入文件转换为数字矩阵

时间:2018-10-04 12:04:01

标签: type-conversion octave

我正在编写代码以从CSV文件导入数据并将其转换为八度矩阵。可以在以下快照中看到导入的数据:

DataImportedFromCSV

在下一步中,我添加了以下命令以删除逗号和“”:

meas_raw_temp = strrep(meas_raw_temp,',',' ')

然后我得到以下形式的数据格式:

DataConvertedWithoutComma

问题在于Octave仍将数据视为1个单个一维数组。也就是说,当我使用size命令时,我得到一个数字,即2647。我需要的是矩阵输出,捕捉的每一行都是矩阵的一行,并且每个元素都分开。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是正在发生的事情。

  1. 您有一个一维(仅行) cell 数组。单元格数组中的每个元素(即单元格)都包含一个 string

  2. 您的字符串中包含逗号和文字双引号。您已经设法通过用“空字符串”替换它们来摆脱它们。好。但是,这并不能改变每个单元格只有一个字符串的事实。

  3. 您需要创建一个for循环来分别处理每个单元格。对于每个单元格,使用' '(即空格)作为分隔符,将字符串分成其各个组成部分(即“令牌”)。您可以适当地使用strsplitstrtok来达到此目的。请注意,您从此过程中获得的“令牌”仍为“字符串”类型。如果需要数字,则需要将其转换(例如,使用str2double或类似的数字)。

  4. 对于您处理的每个单元,找到一种方法来填充预分配矩阵的相应行。

  5. 正如Adriaan在评论中指出的那样,以编程方式执行上述步骤的确切方式可能会有所不同,因此,我将不提供您可能采取的各种方式,我将这个问题的答案限制为上述步骤,这就是您应该如何考虑解决问题的方法。

如果尝试这些步骤并陷入实现的“编程”方面,请随时询问另一个stackoverflow问题。