将结构导出为.csv

时间:2015-10-13 03:02:38

标签: excel matlab csv octave

在Octave中,我有一个名为“semi_firm”的大型“结构”,有19个“行”(我的语言可能完全错误和令人困惑,相信我对你来说比对你来说更混乱:)和维度1x1。 (我正在考虑这种方式,我想象它在Excel中看起来,所以为什么大规模的东西有1x1尺寸完全超出我的意义)。结构中的某些单元格包含单个值,其中一些包含多个。

我提取以下内容:

out = struct("pnum", semi_firm.Patent_Number, "class", semi_firm.Class, "sub", semi_firm.Subclass)

out成为1x108033结构。这应包含三行和108033列,每个单元格中只有一个值。我不明白为什么它是1x108033结构。在一些谷歌搜索之后,我将该结构转换为单元格:

c = struct2cell(out)

c的尺寸为3x1x108033

我想将其导出为.csv文件。我尝试了this suggestion的所有变体但没有效果,因为示例有两个维度,而这里有三个维度。

我想要的只是将cout变成一个简单的.csv文件,理想情况下有三列(pnumclasssub)和108,033行,每个单元格包含一个值。理想情况下,解决方案可扩展到单个单元格包含多个值的情况。例如。在semi_firm中,有一个称为“发明者”的“行”。每个专利通常有多个发明人。

在第一条评论之后,还有一些额外的信息:

我认为squeeze解决了我的部分问题,但在导出内容时仍然会出错。这就是我所做的(糟糕的解决方法):

pats = c(1,1,1) % dim 1x1
classes = c(2,1,1) % dim 1x1
subs = c(3,1,1) % dim 1x1x108033
csvwrite("pats.csv",cell2mat(pats')')
csvwrite("class.csv", cell2mat(classes')')

这很有效。当我创建subs = c(3,1,1)时,它给了我一个1x1x108033的单元格。然后我使用subs = squeeze(subs),它变成108033x1单元格。然后我使用csvwrite("subs.csv", cell2mat(subs))的任何变体都会给我带来错误。

问题似乎是subsout.sub包含七位数字,每个数字都存储为不同的值。将其导出到.csv会产生失真。所以我需要更改存储的格式以便能够导出它。

0 个答案:

没有答案