所以我想将数组分解为多个变量。 例如, 我有数据' (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(更整洁)的方式来执行此操作。
谢谢!
答案 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);