DMVN писал(а):
Хм, из поста про MatLab я ничего не понял, думаю, и автор темы --- тоже.
Поясню:
У нас есть одномерный (хотя в моем примере это несущественно) массив a - неважно каким образом он задан.
Например зададим
Код:
a=[1 -2 3 -4 5 -6...]
Тогда
Код:
abs(a)
создает массив модулей элементов исходного массива.
Получим
![$[\text{1 2 3 4 5 6...}]$ $[\text{1 2 3 4 5 6...}]$](https://dxdy-01.korotkov.co.uk/f/0/d/f/0dfdf7f30b53bdbd3858cdcd99e9880582.png)
Код:
mod(...,p)
создает массив остататков от деления полученных модулей на
![$p$ $p$](https://dxdy-03.korotkov.co.uk/f/2/e/c/2ec6e630f199f589a2402fdf3e0289d582.png)
. Например, для
![$p=3$ $p=3$](https://dxdy-04.korotkov.co.uk/f/3/9/c/39cd1e5f222b0b87f4a26f8b97296bd282.png)
мы получим
наконец
![$...\thicksim =q$ $...\thicksim =q$](https://dxdy-01.korotkov.co.uk/f/8/f/9/8f912fcb848477cc88a6cce09900964a82.png)
- не равно, возвращает массив, в котором для всех элементов предыдущего нашего массива будут единицы, если эти элементы не равны
![$q$ $q$](https://dxdy-02.korotkov.co.uk/f/d/5/c/d5c18a8ca1894fd3a7d25f242cbe889082.png)
и нули - если равны.
Например, при
![$q=2$ $q=2$](https://dxdy-03.korotkov.co.uk/f/a/f/6/af60a6357f2b620de25cec3ffd4afb0d82.png)
получим:
и последнее
![$.*$ $.*$](https://dxdy-01.korotkov.co.uk/f/4/3/5/4354b65d614f9415a2ddb05cb5b6a4d182.png)
- поэлементное умножение исходного массива
![$a=[\text{1 -2 3 -4 5 -6...}]$ $a=[\text{1 -2 3 -4 5 -6...}]$](https://dxdy-01.korotkov.co.uk/f/4/c/e/4cebf464537702234d9fb1ccb6aa8a2b82.png)
и массива с нулями и единицами: умножение на единицу, не изменяет элемент, а умножение на ноль дает ноль - как раз то, что нам нужно:
Собственно, алгоритм написан (правда, для С он будет не оптимален, но...)