Mercurial > hg > jslab
annotate src/samer/units/Stacker2.java @ 8:5e3cbbf173aa tip
Reorganise some more
author | samer |
---|---|
date | Fri, 05 Apr 2019 22:41:58 +0100 |
parents | bf79fb79ee13 |
children |
rev | line source |
---|---|
samer@0 | 1 /* |
samer@0 | 2 * Copyright (c) 2000, Samer Abdallah, King's College London. |
samer@0 | 3 * All rights reserved. |
samer@0 | 4 * |
samer@0 | 5 * This software is provided AS iS and WITHOUT ANY WARRANTY; |
samer@0 | 6 * without even the implied warranty of MERCHANTABILITY or |
samer@0 | 7 * FITNESS FOR A PARTICULAR PURPOSE. |
samer@0 | 8 */ |
samer@0 | 9 |
samer@0 | 10 package samer.units; |
samer@0 | 11 import samer.core.*; |
samer@0 | 12 import samer.maths.*; |
samer@0 | 13 import samer.tools.*; |
samer@0 | 14 |
samer@0 | 15 /* |
samer@0 | 16 * Takes successive input vectors and stacks them into |
samer@0 | 17 * one big output vector. This version only stacks one |
samer@0 | 18 * at new vector at a time and therefore does not need a |
samer@0 | 19 * sub task to run to get new vectors. |
samer@0 | 20 */ |
samer@0 | 21 |
samer@0 | 22 public class Stacker2 extends NullTask |
samer@0 | 23 { |
samer@0 | 24 Node node; |
samer@0 | 25 Vec srcvec; |
samer@0 | 26 VVector target; |
samer@0 | 27 double [] a; |
samer@0 | 28 int k0, k1, k2; |
samer@0 | 29 |
samer@0 | 30 public Stacker2(Vec v, int size) { this(v,size,v.size()); } |
samer@0 | 31 public Stacker2(Vec v, int size, int height) |
samer@0 | 32 { |
samer@0 | 33 node = new Node("stacker"); |
samer@0 | 34 |
samer@0 | 35 Shell.push(node); |
samer@0 | 36 srcvec=v; |
samer@0 | 37 |
samer@0 | 38 k0=height; |
samer@0 | 39 k1=k0; |
samer@0 | 40 k2=(size-1)*k0; |
samer@0 | 41 |
samer@0 | 42 target = new VVector("output",k0*size); |
samer@0 | 43 a = target.array(); |
samer@0 | 44 Mathx.zero(a); |
samer@0 | 45 |
samer@0 | 46 Shell.pop(); |
samer@0 | 47 } |
samer@0 | 48 |
samer@0 | 49 public void dispose() { target.dispose(); } |
samer@0 | 50 public VVector output() { return target; } |
samer@0 | 51 |
samer@0 | 52 public void run() { |
samer@0 | 53 System.arraycopy(a,k1,a,0,k2); // make some room |
samer@0 | 54 System.arraycopy(srcvec.array(),0,a,k2,k0); // copy new data in |
samer@0 | 55 target.changed(); |
samer@0 | 56 } |
samer@0 | 57 } |