MATLAB:根据行数组的内容设置许多变量

时间:2012-02-15 22:19:41

标签: arrays matlab

我正在尝试整理我的代码。我有一个包含5列的数组,每列都分配给一个变量。目前,我使用:

x = inputData(i,1);
y = inputData(i,2);
currentSampleTime = inputData(i,3);
velocityX = inputData(i,4);
velocityY = inputData(i,5);

我认为只需执行以下操作即可完成整理:

[x y currentSampleTime velocityX velocityY] = inputData(i,:);

显然,工作。我认为必须有一个优雅的解决方案?

2 个答案:

答案 0 :(得分:1)

如果inputData是一个单元格数组,那么你可以这样做:

[x y currentSampleTime velocityX velocityY] = deal(inputData{i,:});

但是,由于您使用变量i索引行,我可以假设这是在for循环中吗?

如果是这样,我会在循环之前执行以下操作?

x = inputData(:,1);
y = inputData(:,2);
currentSampleTime = inputData(:,3);
velocityX = inputData(:,4);
velocityY = inputData(:,5);

然后在循环中使用x(i) y(i)等。

...或者取决于生成inputData的方式,尝试在读入或创建inputData时创建必要的数组。

此外,就个人而言,我不喜欢将i用作m代码中的变量,因为如果没有正确初始化,它很容易与虚数混淆。

答案 1 :(得分:0)

试试这个:

wh = size(inputData);
temp = mat2cell(inputData,wh(1),ones(1,wh(2)));
[x,y,currentSampleTime,velocityX,velocityY] = deal(temp{:});