реклама на сайте
подробности

 
 
> индексные операции в Matlab., непонятно на что наткнулся - - это свойство или баг?
ryhor
сообщение Dec 7 2007, 05:57
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 38
Регистрация: 3-04-06
Пользователь №: 15 742



Интересная интересность.

1. делаю так
clear
a = [1 2 3 4]; % source
idx = [2 4 4 8]; % index
b = zeros(1,8); % dest
b(idx) = b(idx) + a

b =
0 1 0 3 0 0 0 4

результат для элемента b(4) - мягко скажем настораживает

2. делаю так
clear
a = [1 2 3 4];
idx = [2 4 4 8];
b = zeros(1,8);
for i=1:4 ...
b(idx(i)) = b(idx(i)) + a(i); ...
end
b
b =
0 1 0 5 0 0 0 4

результат в b(4) радует.

Понятно если бы я просто присваивал типа b(idx) = a;
но я же прошу просуммировать - и в результате как то не правильно.

Возможно это свойство - я доку не читал внимательно, но для меня это оказалось неожиданным свойством.

Подскажите где не правильно пошла моя мысль?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
popeye
сообщение Dec 9 2007, 14:57
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 92
Регистрация: 18-08-05
Пользователь №: 7 750



А что Вас удивляет в пункте 1?

Вы берете 2-ой, 4-ый и 8-ой элементы вектора b (нули) и складываете с вектором a, результатом чего является вектор [1 2 3 4], а потом делаете присваивание выбранным элементам. 4-ый элемент получает значение дважды, поэтому значение 2 перезаписывается тройкой. Всё правильно.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 27th June 2025 - 08:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.02243 секунд с 7
ELECTRONIX ©2004-2016