nikellanjilo Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 Доброго времени суток, уважаемые форумчане. Вопрос состоит в следующем - мне нужно по ЦПТ получить нормальное распределение. Я решил сделать сделать это по ЦПТ (возможно как-то еще можно). Я генерирую рандом, используя сдвиговый регистр с линейной обратной связью, затем суммирую полученные значения. Но вот если посмотреть то, что у меня получается - это далеко не колокол Гауссовский. Собственно вопрос. У меня есть уже сумма из 12 или n слабозависимых величин, какую мне нужно сделать над ними операцию, чтобы получить свой колокол с нужным матожиданием и дисперсией. Собственно - матожидание понятно, просто сумма: матожидание+(выражение) , но что мне нужно сделать в выражении чтобы значения укладывались в заданное мною СКО. Ссылка на ЦПТ в википедии ====>. https://ru.wikipedia.org/wiki/%D0%A6%D0%B5%D0%BD%D1%82%D1%80%D0%B0%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D0%BF%D1%80%D0%B5%D0%B4%D0%B5%D0%BB%D1%8C%D0%BD%D0%B0%D1%8F_%D1%82%D0%B5%D0%BE%D1%80%D0%B5%D0%BC%D0%B0 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Vascom Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 Просто посчитай получающуюся дисперсию. Затем умножь числа на 2 и посчитай снова. И тебе станет ясно на сколько надо умножать, чтобы получить требуемую дисперсию. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
20% скидка на весь каталог электронных компонентов в ТМ Электроникс!Акция "Лето ближе - цены ниже", успей сделать выгодные покупки!Плюс весь апрель действует скидка 10% по промокоду APREL24 + 15% кэшбэк и бесплатная доставка!Перейти на страницу акции Реклама: ООО ТМ ЭЛЕКТРОНИКС, ИНН: 7806548420, info@tmelectronics.ru, +7(812)4094849
nikellanjilo Опубликовано 24 апреля, 2015 Автор Поделиться Опубликовано 24 апреля, 2015 То есть если поэтапно. 1. Я считаю сумму всех значений, делю на количество - получаю среднее значение (чтобы потом найти дисперсию), 2. Затем нахожу дисперсию каждой величины 3. Нахожу дисперсию суммарную 4. Проделываю снова все для 2хЗНАЧЕНИЙ 5. Нахожу нужный коэффициент, на который буду домножать, чтобы значения укладывались в СКО Так? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Выбираем схему BMS для корректной работы литий-железофосфатных (LiFePO4) аккумуляторов Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ, также как и для других, очень важен контроль процесса заряда и разряда, а специализированных микросхем для этого вида аккумуляторов не так много. Инженеры КОМПЭЛ подготовили список имеющихся микросхем и возможных решений от разных производителей. Подробнее>> Реклама: АО КОМПЭЛ, ИНН: 7713005406, ОГРН: 1027700032161
Vascom Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 (изменено) Эм... проще так: У тебя есть набор случайных чисел, допустим 1000 штук в массиве noise. Выполни в Matlab или Octave функцию mean(noise) - получишь матожиданее, выполни std(noise) получишь СКО (соответственно std(noise)^2 - это дисперсия). Это чтобы не запутаться в вычислениях. Затем умножь массив noise на 2 и повтори вычисления матожидания и дисперсии. P.S. 1000 значений может быть мало, возьми миллион. Вот пример octave:8> n=normrnd(1,5,1000000,1); octave:9> mean(n) ans = 1.0031 octave:10> std(n) ans = 5.0054 octave:11> std(n*2) ans = 10.011 В первой строке создаётся одномерный массив из миллиона элементов с матожиданием 1 и СКО (sigma) 5. Вычисления mean и std довольно точны. Если умножим числа на 2, то и СКО увеличится в два раза, а дисперсия в 4 раза. Изменено 24 апреля, 2015 пользователем Vascom 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
IMXO Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 Я генерирую рандом, используя сдвиговый регистр с линейной обратной связью, затем суммирую полученные значения. Но вот если посмотреть то, что у меня получается - это далеко не колокол Гауссовский. может это поможет? http://www.microchip.su/showthread.php?t=4487&page=43 посты 1074-1077 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
nikellanjilo Опубликовано 24 апреля, 2015 Автор Поделиться Опубликовано 24 апреля, 2015 Хорошо если так, когда есть матлаб, но как мне все это использовать в железе? На ПЛИСе 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Vascom Опубликовано 24 апреля, 2015 Поделиться Опубликовано 24 апреля, 2015 Ну можно (нужно) промоделировать всё это в симуляторе перед программированием ПЛИС. Мы же не знаем конкретную твою задачу. Например нужно ли тебе менять матожидание и дисперсию в процессе работы. Ты начинай делать, показывай свой код, verilog. И в процессе всё станет понятно, поможем где надо. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
nikellanjilo Опубликовано 27 апреля, 2015 Автор Поделиться Опубликовано 27 апреля, 2015 module gauss( input [7:0] MO, input [7:0] CKO, input CLK, output reg [7:0] GAUS, output reg [7:0] CH, output reg [7:0] SUMMER ); reg [7:0] change = 8'd12; wire feed = change[7]^change[5]^change[4]^change[3]; reg [7:0] count=8'd0; reg [7:0] sum = 8'd0; always @(posedge CLK) begin change[0]<=feed; change[7:1]<=change[6:0]; if (count<12) begin count<=count+1; sum<=$signed(sum)+$signed(change); end else begin count<=0; sum<=0; SUMMER<=$signed(sum); CH<=$signed(change); GAUS<=$signed(MO)+(($signed(sum)*$signed(CKO))/144); end end endmodule По-сути: 1. Делаю методом Фебоначи на сдвиговом регистре с линейной обратной связью рандом, 2. По ЦПТ - считаю сумму 12 элементов, 3. Перевожу значения чтобы получилось нормальное распределение Но получается бячное что-то... Ты начинай делать, показывай свой код, verilog. И в процессе всё станет понятно, поможем где надо. Собственно вот так :thank_you2: 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
nikellanjilo Опубликовано 27 апреля, 2015 Автор Поделиться Опубликовано 27 апреля, 2015 Короче... Делал через Бокса-Мюллера, промоделировал модель в Маткаде... потом код скину 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Vascom Опубликовано 27 апреля, 2015 Поделиться Опубликовано 27 апреля, 2015 Основная проблема - переполнение регистра sum. Увеличь его разрядность и всё станет лучше. Я тут переписал твой код чтобы проще и понятнее было. Сам модуль http://paste.fedorap...215922/15779614 И тестбенч для его запуска http://paste.fedorap...215923/01578031 Получаемое распределение Конечно не чистый гаусс, но и метод генерации у тебя очень простой. 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Vascom Опубликовано 29 апреля, 2015 Поделиться Опубликовано 29 апреля, 2015 nikellanjilo, как успехи? 0 Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.