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

Last change on this file since 858 was 791, checked in by Maciej Komosinski, 7 years ago

Code formatting

  • Property svn:eol-style set to native
File size: 944 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.