我正在编写代码以从CSV文件导入数据并将其转换为八度矩阵。可以在以下快照中看到导入的数据:
在下一步中,我添加了以下命令以删除逗号和“”:
meas_raw_temp = strrep(meas_raw_temp,',',' ')
然后我得到以下形式的数据格式:
问题在于Octave仍将数据视为1个单个一维数组。也就是说,当我使用size命令时,我得到一个数字,即2647。我需要的是矩阵输出,捕捉的每一行都是矩阵的一行,并且每个元素都分开。
有什么想法吗?
答案 0 :(得分:1)
这是正在发生的事情。
您有一个一维(仅行) cell 数组。单元格数组中的每个元素(即单元格)都包含一个 string 。
您的字符串中包含逗号和文字双引号。您已经设法通过用“空字符串”替换它们来摆脱它们。好。但是,这并不能改变每个单元格只有一个字符串的事实。
您需要创建一个for循环来分别处理每个单元格。对于每个单元格,使用' '
(即空格)作为分隔符,将字符串分成其各个组成部分(即“令牌”)。您可以适当地使用strsplit
或strtok
来达到此目的。请注意,您从此过程中获得的“令牌”仍为“字符串”类型。如果需要数字,则需要将其转换(例如,使用str2double
或类似的数字)。
对于您处理的每个单元,找到一种方法来填充预分配矩阵的相应行。
正如Adriaan在评论中指出的那样,以编程方式执行上述步骤的确切方式可能会有所不同,因此,我将不提供您可能采取的各种方式,我将这个问题的答案限制为上述步骤,这就是您应该如何考虑解决问题的方法。
如果尝试这些步骤并陷入实现的“编程”方面,请随时询问另一个stackoverflow问题。