我有一个MATLAB应用程序,它生成一个查询,将其发送到我的python函数,查询sqlite数据库,并将其返回到MATLAB应用程序。
它作为Python元组的Python列表返回。Python列表示例
[(1, 'apple', 'fruit', 30.6), (2, 'pear', 'fruit', 1), (3, 'squash', 'vegetable', 20.1)]
代码片段
squery = py.str(query);
queryResult = py.queryData.querycommand(squery)
mqueryResult = cell(queryResult)
populateTableHeader(app);
app.resultTable.Data = mqueryResult;
当我运行代码时,在运行最后一行时得到这个错误消息
设置类“Table”的属性“Data”时出错:数据必须是数字、逻辑、字符串、单元格或表数组
我认为问题是数组是由py.tuple组成的,需要先转换成MATLAB变量,我该怎么做呢?
1条答案
按热度按时间4dc9hkyq1#
你是正确的,因为错误消息是由Python函数返回的数据是Python元组的形式引起的,这与MATLAB不直接兼容。
要将Python元组转换为MATLAB变量,可以使用
py.array
函数将Python列表转换为NumPy数组,然后使用cell
函数将NumPy数组转换为MATLAB单元数组。下面是一个如何修改代码以执行此转换的示例:
在上面的代码中,
py.array
将Python列表转换为NumPy数组,double
将NumPy数组转换为MATLAB双数组。最后,使用tolist函数将NumPy数组转换为Python列表,然后使用cell
函数将其转换为MATLAB单元数组。请注意,在上面的示例中,我假设Python函数返回的数据仅由数值组成。如果数据还包含字符串值,则可能需要相应地修改代码,以确保数据正确转换为MATLAB单元数组。