我正在尝试使用Octave中的xlswrite
包中的io
将单元格数组写入Octave中的Excel电子表格(3.8.0,io
2.0.2加载,使用Windows 7 64位)。
单元格数组如下所示:
>> pump_backlash(1:3,:)
ans =
{
[1,1] = Machine #
[2,1] = Machine_01
[3,1] = Machine_02
[1,2] = Station #
[2,2] = 1
[3,2] = 1
[1,3] = Pump channel #
[2,3] = 1
[3,3] = 2
[1,4] = Backlash
[2,4] =
57 65 62
[3,4] =
58 49 50
}
除了它有更多的行。第一行由“标题”(字符串)组成,然后第一列是与机器ID相关的字符串,第二列和第三列是整数(标量),单元格数组的第四列是1x3向量整数(尽管如果测试/测量因任何原因失败,第4列中的单元格有时会为空)。
我尝试使用以下命令写入Excel:
>> xlswrite('Pump_cal_results.xlsx',pump_backlash)
,我得到的错误信息如下:
Creating file Pump_cal_results.xlsx
error: cellfun: all values must be scalars when UniformOutput = true
error: called from:
error: C:\Octave\Octave-3.8.0\share\octave\packages\io-2.0.2\private\spsh_prstype.m at line 62, column 6
error: C:\Octave\Octave-3.8.0\share\octave\packages\io-2.0.2\private\__COM_oct2spsh__.m at line 108, column 10
error: C:\Octave\Octave-3.8.0\share\octave\packages\io-2.0.2\oct2xls.m at line 189, column 18
error: C:\Octave\Octave-3.8.0\share\octave\packages\io-2.0.2\xlswrite.m at line 178, column 20
如果我按照错误追踪并转到\private\spsh_prstype.m
的第62行,我有:
ptr = cellfun ("isnan", obj); ## Find NaNs & set to BLANK
所以它显然与cellfun
的函数调用有关,但我不知道从那里去哪里。 cellfun
中有spsh_prstype.m
的其他函数调用。
我在互联网上搜索到的最接近的是this question,但没有提供解决方案。
欢迎任何帮助/建议。
答案 0 :(得分:0)
没有收到任何答案,我会回答我自己的问题: - )
我还没有找出问题的根本原因以及解决方法,但我找到了解决方法。似乎问题在于第4列中的元素是向量而不是标量。似乎要写入Excel,单元格数组中的所有元素必须是“统一的”,我认为这意味着你不能混合使用标量和向量。
所以我的解决方法是重新排列单元格数组,使它现在看起来像:
>> pump_backlash(1:3,:)
ans =
{
[1,1] = Machine #
[2,1] = Machine_01
[3,1] = Machine_02
[1,2] = Station #
[2,2] = 1
[3,2] = 1
[1,3] = Pump channel #
[2,3] = 1
[3,3] = 2
[1,4] = Backlash #1
[2,4] = 57
[3,4] = 58
[1,5] = Backlash #2
[2,5] = 65
[3,5] = 49
[1,6] = Backlash #3
[2,6] = 62
[3,6] = 50
}
即。单元格数组现在有6列而不是4列,并且没有更多的向量,只有标量。
然后调用xlswrite
就可以了:
xlswrite('Pump_cal_results.xlsx',pump_backlash,'Backlash','','com');