如何将Python元组列表转换为Matlab数组

lvmkulzt  于 2023-03-30  发布在  Matlab
关注(0)|答案(1)|浏览(421)

我有一个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变量,我该怎么做呢?

4dc9hkyq

4dc9hkyq1#

你是正确的,因为错误消息是由Python函数返回的数据是Python元组的形式引起的,这与MATLAB不直接兼容。
要将Python元组转换为MATLAB变量,可以使用py.array函数将Python列表转换为NumPy数组,然后使用cell函数将NumPy数组转换为MATLAB单元数组。
下面是一个如何修改代码以执行此转换的示例:

squery = py.str(query);
queryResult = py.queryData.querycommand(squery)
pyResultArray = py.array(queryResult)
npResultArray = double(pyResultArray)
mqueryResult = cell(npResultArray.tolist())
populateTableHeader(app);
app.resultTable.Data = mqueryResult;

在上面的代码中,py.array将Python列表转换为NumPy数组,double将NumPy数组转换为MATLAB双数组。最后,使用tolist函数将NumPy数组转换为Python列表,然后使用cell函数将其转换为MATLAB单元数组。
请注意,在上面的示例中,我假设Python函数返回的数据仅由数值组成。如果数据还包含字符串值,则可能需要相应地修改代码,以确保数据正确转换为MATLAB单元数组。

相关问题