MATLAB: установка множества переменных в зависимости от содержимого массива строк - PullRequest
0 голосов
/ 16 февраля 2012

Я пытаюсь привести в порядок свой код. У меня есть массив с 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 ]

1 голос
/ 16 февраля 2012

Если 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 голосов
/ 16 февраля 2012

Попробуйте это:

wh = size(inputData);
temp = mat2cell(inputData,wh(1),ones(1,wh(2)));
[x,y,currentSampleTime,velocityX,velocityY] = deal(temp{:});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...