2012-02-15 56 views
0

我正在整理我的代码。我有一个包含5列的数组,每个列都被分配给一个变量。目前,我使用:MATLAB:根据行数组的内容设置很多变量

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,:); 

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

回答

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代码中的变量,因为如果未正确初始化,它很容易与虚数混淆。

0

试试这个:

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