Понимание обозначения двоеточия в MATLAB - PullRequest
0 голосов
/ 04 декабря 2011

Итак, я совершенно новичок в MATLAB и пытаюсь понять обозначения двоеточия в математических операциях.Итак, в этой книге я нашел следующее утверждение:

w(1:5)=j(1:5) + k(1:5);

Я не понимаю, что он на самом деле делает.Я знаю, что w(1:5) в значительной степени выполняет итерацию по массиву w от индексов 1 до 5, но в приведенном выше утверждении, не должны ли все индексы w быть равными j(5) + k(5) в конце?Или я совершенно не прав, как это работает?Было бы замечательно, если бы кто-то разместил эквивалент на Java там.Заранее спасибо: -)

Ответы [ 4 ]

2 голосов
/ 04 декабря 2011

Я почти уверен, что это означает

«Первые 5 элементов w должны быть первыми 5 элементами j + первые 5 элементов k» (хотя я не уверен, что массивы matlab начинаются с 0 или 1)

Итак:

w1 = j1+k1
w2 = j2+k2
w3 = j3+k3
w4 = j4+k4
w5 = j5+k5

Подумайте здесь "векторное сложение".

1 голос
/ 04 декабря 2011
w(1:5)=j(1:5) + k(1:5);

- это то же самое, что:

for i=1:5
   w(i)=j(i)+k(i);
end
0 голосов
/ 04 декабря 2011

Я думаю, что ваша проблема проистекает из того, как вы называете это утверждение.Это не итерация, а скорее простое задание.Теперь нам нужно только понять, что было назначено для чего.

Я предполагаю, j, k, w - все векторы 1 на N.

j(1:5) - означает, что элементы от 1 до 5 вектора j
j(1:5) + k(1:5) - приведут к поэлементной сумме обоих операндов
w(1:5) = ... - назначитрезультат снова поэлементно до w

Запись кода с использованием двоеточия делает его менее подробным и более эффективным.Поэтому настоятельно рекомендуется сделать это.Кроме того, двоеточие является основной и очень мощной функцией MATLAB.Убедитесь, что вы хорошо понимаете это, прежде чем двигаться дальше.MATLAB очень хорошо документирован, поэтому вы можете прочитать по этой теме здесь .

0 голосов
/ 04 декабря 2011

MATLAB использует векторы и матрицы и сильно оптимизирован для эффективной обработки операций над ними.

Выражение w(1:5) означает вектор, состоящий из первых 5 элементов w;Выложенное вами выражение добавляет два вектора из 5 элементов (первые 5 элементов из j и k) и присваивает результат первым пяти элементам из w.

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