matlab中的pythonic方式将数组分解为变量

时间:2017-05-01 01:38:29

标签: arrays matlab

所以我想将数组分解为多个变量。 例如, 我有数据' (136,9)大小的数组,是双重类型。 我想将数据(1,:)的值分解为多个变量,如下所示:

[frm_id,seq_id,xmin,ymin,w,h,temp1,temp2,temp3] = data(1,:);

在python中它很简单,但上面的代码在matlab中给出了以下错误:

Insufficient number of outputs from right hand side of equal sign to satisfy
assignment.

我可以使用像

这样的东西
frm_id = data(1,1);
seq_id = data(1,2);
%ect

但我相信必须有matlab(更整洁)的方式来执行此操作。

谢谢!

2 个答案:

答案 0 :(得分:4)

您可以使用num2cell将矩阵转换为单元格数组,然后将单元格的内容复制到每个变量中:

C = num2cell(data,1);
[frm_id,seq_id,xmin,ymin,w,h,temp1,temp2,temp3] = C{:};

答案 1 :(得分:1)

我只能建议你创建一个这样的函数:

function [frm_id,seq_id,xmin,ymin,w,h,temp1,temp2,temp3] = myfunction (data)

frm_id = data(:,1);
seq_id = data(:,2);
xmin = data(:,3);
ymin = data(:,4);
w = data(:,5);
h = data(:,6);
temp1 = data(:,7);
temp2 = data(:,8);
temp3 = data(:,9);

所以在您的主要代码中

[frm_id,seq_id,xmin,ymin,w,h,temp1,temp2,temp3] = myfunction(data);