source: cpp/frams/neuro/impl/neuroimpl-channels.cpp @ 1064

Last change on this file since 1064 was 907, checked in by Maciej Komosinski, 5 years ago

Code formatting

  • Property svn:eol-style set to native
File size: 952 bytes
Line 
1// This file is a part of Framsticks SDK.  http://www.framsticks.com/
2// Copyright (C) 1999-2015  Maciej Komosinski and Szymon Ulatowski.
3// See LICENSE.txt for details.
4
5#include "neuroimpl-channels.h"
6#include <common/nonstd_stl.h>
7
8void NI_Channelize::go()
9{
10        setChannelCount(getInputCount());
11        for (int i = 0; i < getInputCount(); i++)
12                setState(getWeightedInputState(i), i);
13}
14
15void NI_ChMux::go()
16{
17        int c = getInputChannelCount(1);
18        if (c < 2) { setState(getWeightedInputState(1)); return; }
19        double s = getWeightedInputState(0);
20        s = (max(-1.0, min(1.0, s)) + 1.0) / 2.0; // 0..1
21        int i1;
22        i1 = (int)(s * (c - 1)); i1 = max(0, min(i1, c - 2));
23        double sw = 1.0 / (c - 1);
24        double s1 = sw * i1;
25        double w1 = fabs((s - s1) / sw);
26        double w2 = 1.0 - w1;
27        double is1 = getWeightedInputState(1, i1);
28        double is2 = getWeightedInputState(1, i1 + 1);
29        setState(is1 * w2 + is2 * w1);
30}
31
32void NI_ChSel::go()
33{
34        setState(getWeightedInputState(0, ch));
35}
Note: See TracBrowser for help on using the repository browser.