コード例 #1
0
        public IFloatData2D M_mult_MT(IFloatData2D mt, IFloatData2D m)
        {
            var output = new float[mt.W, mt.H];

            Parallel.For(0, mt.W, x => { Parallel.For(0, mt.H, y => { output[y, x] = m[x, y] * mt[y, x]; }); });
            return(new CPU_FloatData2D(output));
        }
コード例 #2
0
 public IFloatData2D Sqrt(IFloatData2D cache, IFloatData2D arr)
 {
     for (int x = 0; x < arr.W; x++)
     {
         for (int y = 0; y < arr.H; y++)
         {
             cache[x, y] = SafeDouble(Math.Sqrt(arr[x, y]));
         }
     }
     return(cache);
 }
コード例 #3
0
 public IFloatData2D M_div_C(IFloatData2D cache, IFloatData2D m, float c)
 {
     for (int x = 0; x < m.W; x++)
     {
         for (int y = 0; y < m.H; y++)
         {
             cache[x, y] = m[x, y] / c;
         }
     }
     return(cache);
 }
コード例 #4
0
 public IFloatData2D C_div_M(IFloatData2D cache, IFloatData2D m, int c)
 {
     for (int x = 0; x < m.W; x++)
     {
         for (int y = 0; y < m.H; y++)
         {
             cache[x, y] = c / m[x, y];
         }
     }
     return(cache);
 }
コード例 #5
0
 public IFloatData2D M_add_M(IFloatData2D cache, IFloatData2D m0, IFloatData2D m1)
 {
     for (int x = 0; x < m0.W; x++)
     {
         for (int y = 0; y < m0.H; y++)
         {
             cache[x, y] = m0[x, y] + m1[x, y];
         }
     }
     return(cache);
 }
コード例 #6
0
 public IFloatData2D M_mult_V(IFloatData2D cache, IFloatData2D m, IFloatData v)
 {
     for (int x = 0; x < m.W; x++)
     {
         for (int y = 0; y < m.H; y++)
         {
             cache[x, y] = m[x, y] * v[x];
         }
     }
     return(cache);
 }
コード例 #7
0
 public IFloatData2D VT_mult_M(IFloatData2D cache, IFloatData vt, IFloatData2D m)
 {
     for (int x = 0; x < m.W; x++)
     {
         for (int y = 0; y < m.H; y++)
         {
             cache[x, y] = vt[y] * m[x, y];
         }
     }
     return(cache);
 }
コード例 #8
0
        public IFloatData2D M_mult_MT(IFloatData2D mt, IFloatData2D m)
        {
            var output = new float[mt.W, mt.H];

            for (int x = 0; x < mt.W; x++)
            {
                for (int y = 0; y < mt.H; y++)
                {
                    output[y, x] = m[x, y] * mt[y, x];
                }
            }
            return(new CPU_FloatData2D(output));
        }
コード例 #9
0
        public IFloatData2D ApplyMask(IFloatData2D arr, IByteData2D mask)
        {
            var output = new float[arr.W, arr.H];

            for (var x = 0; x < arr.W; x++)
            {
                for (var y = 0; x < arr.H; x++)
                {
                    output[x, y] = arr[x, y] * mask[x, y];
                }
            }
            return(new CPU_FloatData2D(output));
        }
コード例 #10
0
        public IFloatData SumLine(IFloatData2D arr)
        {
            var output = new float[arr.W];

            Parallel.For(0, arr.W, x =>
            {
                var sum = 0f;
                for (var y = 0; y < arr.H; y++)
                {
                    sum += arr[x, y];
                }

                output[x] = sum;
            });
            return(new CPU_FloatData(output));
        }
コード例 #11
0
        public IFloatData SumColumn(IFloatData2D arr)
        {
            var output = new float[arr.H];

            Parallel.For(0, arr.H, y =>
            {
                var sum = 0f;
                for (var x = 0; x < arr.W; x++)
                {
                    sum += arr[x, y];
                }

                output[y] = sum;
            });
            return(new CPU_FloatData(output));
        }
コード例 #12
0
        public IFloatData SumColumn(IFloatData2D arr)
        {
            var output = new float[arr.H];

            for (int y = 0; y < arr.H; y++)
            {
                var sum = 0f;
                for (var x = 0; x < arr.W; x++)
                {
                    sum += arr[x, y];
                }

                output[y] = sum;
            }
            ;
            return(new CPU_FloatData(output));
        }
コード例 #13
0
        public IFloatData SumLine(IFloatData2D arr)
        {
            var output = new float[arr.W];

            for (int x = 0; x < arr.W; x++)
            {
                var sum = 0f;
                for (var y = 0; y < arr.H; y++)
                {
                    sum += arr[x, y];
                }

                output[x] = sum;
            }
            ;
            return(new CPU_FloatData(output));
        }
コード例 #14
0
 public FloatArray2DT(IFloatData2D data)
 {
     _view = data;
 }
コード例 #15
0
 public FloatArray2D(float[,] data)
 {
     _view  = ProcessingDevice.FloatData.New(data);
     _cache = ProcessingDevice.FloatData.New(W, H);
 }
コード例 #16
0
 public FloatArray2D(int w, int h)
 {
     _view  = ProcessingDevice.FloatData.New(w, h);
     _cache = ProcessingDevice.FloatData.New(w, h);
 }
コード例 #17
0
 public IFloatData2D Sqrt(IFloatData2D cache, IFloatData2D arr)
 {
     Parallel.For(0, arr.W, x => { Parallel.For(0, arr.H, y => { cache[x, y] = SafeDouble(Math.Sqrt(arr[x, y])); }); });
     return(cache);
 }
コード例 #18
0
 public FloatArray2D(IFloatData2D data)
 {
     _view  = data;
     _cache = ProcessingDevice.FloatData.New(W, H);
 }
コード例 #19
0
 public IFloatData2D C_div_M(IFloatData2D cache, IFloatData2D m, int c)
 {
     Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = c / m[x, y]; }); });
     return(cache);
 }
コード例 #20
0
 public IFloatData2D M_div_C(IFloatData2D cache, IFloatData2D m, float c)
 {
     Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = m[x, y] / c; }); });
     return(cache);
 }
コード例 #21
0
 public IFloatData2D M_mult_V(IFloatData2D cache, IFloatData2D m, IFloatData v)
 {
     Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = m[x, y] * v[x]; }); });
     return(cache);
 }
コード例 #22
0
 public IFloatData2D M_add_M(IFloatData2D cache, IFloatData2D m0, IFloatData2D m1)
 {
     Parallel.For(0, m0.W, x => { Parallel.For(0, m0.H, y => { cache[x, y] = m0[x, y] + m1[x, y]; }); });
     return(cache);
 }
コード例 #23
0
 public IFloatData2D VT_mult_M(IFloatData2D cache, IFloatData vt, IFloatData2D m)
 {
     Parallel.For(0, m.W, x => { Parallel.For(0, m.H, y => { cache[x, y] = vt[y] * m[x, y]; }); });
     return(cache);
 }