Идея массива C в Matlab - PullRequest
       32

Идея массива C в Matlab

0 голосов
/ 09 января 2012

Возможно ли применить идею массива в C к MATLAB? Например, если у нас есть Двойной массив [10]; и если мы хотим присвоить значение, которое мы напишем, например, Массив [5] = 2;

Есть ли способ написать эквивалент в MATLAB?

Ответы [ 4 ]

2 голосов
/ 09 января 2012

Вы можете определить свой собственный класс, переопределить оператор [].
Я описал механизм в Здесь
Поскольку это пользовательская функция, вы также можете изменить индексирование на основе 1 на индексирование на основе 0.

Что касается конструктора, я сомневаюсь, что вы можете сделать это.

В любом случае, зачем вам это делать?
Вы запутаете всех пользователей Matlab и вызовете хаос.
В Риме делай так, как делают римляне.

2 голосов
/ 09 января 2012

Я не уверен, что вы подразумеваете под "Возможно ли применить идею массива в C к MATLAB". Массив - это просто одномерный список чисел (или других типов данных). MATLAB в первую очередь предназначен для работы с матрицами (MATLAB - сокращение от Matrix laborartory), а массив или вектор - это просто особый случай матрицы. Поэтому я думаю, что ответ на ваш вопрос - да, если я правильно понял.

Для инициализации массивов или матриц в MATLAB мы используем нули или единиц :

>> array = zeros(1,5)

array =

     0     0     0     0     0

Затем мы можем индексировать элементы массива так же, как C:

>> array(3) = 3

array =

     0     0     3     0     0

Обратите внимание, однако, что индексирование массива MATLAB основано на индексе, в то время как массивы C основаны на нуле.

Эта статья описывает индексирование матрицы / массива в MATLAB.

0 голосов
/ 09 января 2012

Нет оператора индексации []. Вы должны использовать () для индексации массива.

Если вы напишите

x = 1:10;
x[2]

тогда вы получите следующую ошибку

 x[2]
 |
Error: Unbalanced or unexpected parenthesis or bracket.
0 голосов
/ 09 января 2012

Да, вы можете. Массивы используются в C и MATLAB, и они могут использоваться для тех же функций. За исключением, пожалуйста, имейте в виду, что индексирование массивов C и MATLAB различны.

Первый элемент массива C имеет индекс ноль. то есть в X = [10 20 30 40], x [0] вернет 10. Но в MATLAB это даст ошибку. Чтобы получить доступ к номеру 10, вы должны использовать выражение x [1] в MATLAB.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...