Идея массива C в Matlab
Можно ли применить идею массива в C к MATLAB Например, если у нас есть Double array[10]; и если мы хотим присвоить значение, мы напишем, например, Array[5]=2;
Есть ли способ написать эквивалент в MATLAB?
4 ответа
Вы можете определить свой собственный класс, переопределить оператор [].
Я описал механизм здесь
Поскольку это пользовательская функция, вы также можете изменить индексирование на основе 1 на индексирование на основе 0.
Что касается конструктора, я сомневаюсь, что вы можете сделать это.
Во всяком случае, почему вы хотите это сделать?
Вы запутаете всех пользователей Matlab и вызовете хаос.
Когда в Риме, делай, как римляне.
Я не уверен, что вы подразумеваете под "Возможно ли применить идею массива в 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.
Там нет оператора индексации []
, Вы должны использовать ()
для индексации массива.
Если ты пишешь
x = 1:10;
x[2]
тогда вы получите следующую ошибку
x[2]
|
Error: Unbalanced or unexpected parenthesis or bracket.
Да, ты можешь. Массивы используются в C и MATLAB и могут использоваться для тех же функций. За исключением, пожалуйста, имейте в виду, что индексирование массивов C и MATLAB различны.
Первый элемент массива C имеет индекс ноль. то есть в X = [10 20 30 40], x[0] вернет 10. Но в MATLAB это даст ошибку. Чтобы получить доступ к номеру 10, вы должны использовать выражение x[1] в MATLAB.