Pārlūkot izejas kodu

cmVectOpTemplateHdr/Code.h : Added cmVox_NormToAbsMax() and cmVox_LinSpace().

master
kevin 10 gadus atpakaļ
vecāks
revīzija
c5c45e5039
2 mainītis faili ar 38 papildinājumiem un 0 dzēšanām
  1. 32
    0
      vop/cmVectOpsTemplateCode.h
  2. 6
    0
      vop/cmVectOpsTemplateHdr.h

+ 32
- 0
vop/cmVectOpsTemplateCode.h Parādīt failu

@@ -310,6 +310,29 @@ unsigned  VECT_OP_FUNC(NormToMax)(    VECT_OP_TYPE* dp, unsigned dn )
310 310
   return i;
311 311
 }
312 312
 
313
+unsigned VECT_OP_FUNC(NormToAbsMax)(   VECT_OP_TYPE* dp, unsigned dn, VECT_OP_TYPE fact )
314
+{
315
+  if( dn == 0 )
316
+    return cmInvalidIdx;
317
+
318
+  unsigned     i  = 0;
319
+  unsigned     mi = 0;
320
+  VECT_OP_TYPE mx = fabs(dp[0]);
321
+
322
+  for(i=1; i<dn; ++i)
323
+    if( fabs(dp[i])>mx )
324
+    {
325
+      mi = i;
326
+      mx = fabs(dp[i]);
327
+    }
328
+
329
+  VECT_OP_FUNC(MultVS)(dp,dn,fact/mx);
330
+  
331
+  return mi;
332
+  
333
+}
334
+
335
+
313 336
 VECT_OP_TYPE  VECT_OP_FUNC(AlphaNorm)(const VECT_OP_TYPE* sp, unsigned sn, VECT_OP_TYPE alpha )
314 337
 {
315 338
   double sum = 0;
@@ -1903,6 +1926,15 @@ VECT_OP_TYPE VECT_OP_FUNC(SynthPinkNoise)( VECT_OP_TYPE* dbp, unsigned n, VECT_O
1903 1926
   return *sp;
1904 1927
 }
1905 1928
 
1929
+VECT_OP_TYPE*  VECT_OP_FUNC(LinSpace)( VECT_OP_TYPE* dbp, unsigned dn, VECT_OP_TYPE base, VECT_OP_TYPE limit )
1930
+{
1931
+  unsigned i = 0;
1932
+  for(; i<dn; ++i)
1933
+    dbp[i] = base + i*(limit-base)/(dn-1);
1934
+  return dbp;
1935
+}
1936
+
1937
+
1906 1938
 VECT_OP_TYPE* VECT_OP_FUNC(LinearToDb)( VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp, VECT_OP_TYPE mult )
1907 1939
 {
1908 1940
   const VECT_OP_TYPE* dep = dbp + dn;

+ 6
- 0
vop/cmVectOpsTemplateHdr.h Parādīt failu

@@ -55,6 +55,9 @@ VECT_OP_TYPE*  VECT_OP_FUNC(VarianceM)(VECT_OP_TYPE* dp,  const VECT_OP_TYPE* sp
55 55
 // dp[] ./= max(dp). Returns the index of the max value.
56 56
 unsigned  VECT_OP_FUNC(NormToMax)(    VECT_OP_TYPE* dp, unsigned dn );
57 57
 
58
+// db[] .*= fact / abs(max(dp));
59
+unsigned VECT_OP_FUNC(NormToAbsMax)(   VECT_OP_TYPE* dp, unsigned dn, VECT_OP_TYPE fact );
60
+
58 61
 
59 62
 VECT_OP_TYPE  VECT_OP_FUNC(AlphaNorm)(const VECT_OP_TYPE* sp, unsigned sn, VECT_OP_TYPE alpha );
60 63
 
@@ -383,6 +386,9 @@ unsigned      VECT_OP_FUNC(SynthPhasor)(    VECT_OP_TYPE* dbp, unsigned dn, unsi
383 386
 /// Return value should be passed back via delaySmp on the next call.
384 387
 VECT_OP_TYPE  VECT_OP_FUNC(SynthPinkNoise)( VECT_OP_TYPE* dbp, unsigned dn, VECT_OP_TYPE delaySmp );
385 388
 
389
+/// Same as Matlab linspace() v[i] = i * (limit-1)/n
390
+VECT_OP_TYPE*  VECT_OP_FUNC(LinSpace)( VECT_OP_TYPE* dbp, unsigned dn, VECT_OP_TYPE base, VECT_OP_TYPE limit );
391
+
386 392
 VECT_OP_TYPE* VECT_OP_FUNC(LinearToDb)(    VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp, VECT_OP_TYPE mult );
387 393
 VECT_OP_TYPE* VECT_OP_FUNC(dBToLinear)(    VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp, VECT_OP_TYPE mult );
388 394
 VECT_OP_TYPE* VECT_OP_FUNC(AmplitudeToDb)( VECT_OP_TYPE* dbp, unsigned dn, const VECT_OP_TYPE* sp );

Notiek ielāde…
Atcelt
Saglabāt