2013-06-14 2 views
-1

У меня есть набор переменных в MATLAB с именами A1, A2, ..., A100. У меня также есть функция, которая генерирует случайное целое число от 1 до 100.Вызов переменных MATLAB с переменными именами

Если случайное целое число равно n, как я могу вызвать связанную переменную An без необходимости создавать 100 if-statements или коммутационных шкафов?

+2

Использование массива. http://en.wikipedia.org/wiki/Array_data_structure – Pramod

+0

Да, для простого примера, который я поставил, можно просто создать «A = [A1; A2; ... A100] '. Но мой вопрос заключается в том, как называть переменные MATLAB с разными именами. В качестве более сложного примера случайное число может вместо этого быть случайной строкой '' str'', которая должна, в свою очередь, называть 'Astr'. – Doubt

+1

Полностью измените свой подход, сохраните свои данные в матрице (или массиве), если позволяют размеры, или в массиве ячеек или, наконец, в структуре, если вы хотите соединить данные с некоторой метаинформацией, например. с именами полей. – Oleg

ответ

3

Прежде всего, это плохая практика использования таких имен. A(1), A(2) намного лучше.

Я не знаю, как хранятся ваши переменные, но если их можно хранить в виде массива, вы обязательно должны это сделать.

Если нет, то вы можете использовать eval

eval(['A', num2str(idx)]) 
+1

Я уверен, что это должно работать: 'A_mat = arrayfun (@ (x) eval (['A', num2str (x)]), 1: 100)', если вы хотите преобразовать его в один массив. –

+2

+1 и я полностью согласен с тем, что имена, такие как 'A1',' A2', должны ** не использоваться **. – Schorsch

+2

Буду признателен, если кто-то скажет мне, почему ответ получил -1. Если вы считаете, что ответ плох, сообщите мне и объясните, почему. Если бы вы могли предложить лучшее решение, это было бы здорово! Таким образом, мы можем чему-то научиться ... Спасибо! –

Смежные вопросы