我正在尝试整理我的代码。我有一个包含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,:);
显然,不工作。我认为必须有一个优雅的解决方案?
答案 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{:});