当前位置: 首页>>代码示例>>C#>>正文


C# ILArray.CreateIterator方法代码示例

本文整理汇总了C#中ILArray.CreateIterator方法的典型用法代码示例。如果您正苦于以下问题:C# ILArray.CreateIterator方法的具体用法?C# ILArray.CreateIterator怎么用?C# ILArray.CreateIterator使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在ILArray的用法示例。


在下文中一共展示了ILArray.CreateIterator方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: real

 /// <summary>
 /// real part of complex array
 /// </summary>
 /// <param name="X">complex input array</param>
 /// <returns>real part of complex array</returns>
 public static /*!HC:outCls1*/ ILArray<double> real (/*!HC:inCls1*/ ILArray<complex> X) {
     int nrX = X.m_dimensions.NumberOfElements; 
     /*!HC:outArr1*/ double [] retArr = new /*!HC:outArr1*/ double [nrX]; 
     /*!HC:outCls1*/ ILArray<double> ret = new /*!HC:outCls1*/ ILArray<double> (retArr,X.m_dimensions); 
     ILIterator</*!HC:inArr1*/ complex > it = X.CreateIterator(ILIteratorPositions.ILEnd,0); 
     for (int i= 0; i < nrX; i++) {
         retArr[i] = it.Increment().real; 
     }
     return ret; 
 }
开发者ID:wdxa,项目名称:ILNumerics,代码行数:15,代码来源:real.cs

示例2: isSorted

 private bool isSorted(ILArray<double> input, int dim, bool descending) {
     if (input.IsEmpty || input.IsScalar) return true; 
     ILIterator<double> it = input.CreateIterator(ILIteratorPositions.ILStart,dim); 
     double tmpold = it.Value;
     double tmpnew = it.Increment(); 
     int dimpos = 1; 
     while (!it.IsAtStart()) {
         if (++dimpos % input.Dimensions[dim] != 1) {
             if (descending) {
                 if (tmpnew > tmpold) return false; 
             } else {
                 if (tmpnew < tmpold) return false; 
             }
         }
         tmpold = tmpnew; 
         tmpnew = it.Increment(); 
     }
     return true; 
 }
开发者ID:wdxa,项目名称:ILNumerics,代码行数:19,代码来源:TESTQuickSort.cs

示例3: DoubleBinaryDoubleOperator

 /// <summary>
 /// operate on elements of both storages by the given function -> relational operations 
 /// </summary>
 /// <param name="inArray1">First storage array</param>
 /// <param name="inArray2">Second storage array</param>
 /// <param name="operation">operation to apply to the elements of inArray. This
 /// acts like a function pointer.</param>
 /// <returns>new ILLogicalArray with result of operation for corresponding 
 /// elements of both arrays.</returns>
 /// <remarks>The values of inArray2 nor inArray2 will not be altered.The dimensions 
 /// of both arrays must match.</remarks>
 private static ILArray<double> DoubleBinaryDoubleOperator(ILArray<double> inArray1, ILArray<double> inArray2,
                                              ILApplyDouble_DoubleDouble operation) {
     ILDimension inDim = inArray1.Dimensions;
     if (!inDim.IsSameSize(inArray2.Dimensions))
         throw new Exception("Array dimensions must match.");
     double[] retBoolArr;
     // build ILDimension
     int newLength = inDim.NumberOfElements;
     retBoolArr = new double[newLength];
     int leadDim = 0;
     int leadDimLen = inDim[0];
     if (inArray1.IsReference || inArray2.IsReference) {
         // this will most probably be not very fast, but .... :|
         #region Reference storage
         // walk along the longest dimension (for performance reasons)
         for (int i = 1; i < inDim.NumberOfDimensions; i++) {
             if (leadDimLen < inDim[i]) {
                 leadDimLen = inDim[i];
                 leadDim = i;
             }
         }
         ILIterator<double> it1 = inArray1.CreateIterator(ILIteratorPositions.ILEnd, leadDim);
         ILIterator<double> it2 = inArray2.CreateIterator(ILIteratorPositions.ILEnd, leadDim);
         unsafe {
             fixed (double* pOutArr = retBoolArr) {
                 double* poutarr = pOutArr;
                 double* outEnd = poutarr + newLength;
                 while (poutarr < outEnd) {
                     *poutarr++ = operation(it1.Increment(), it2.Increment());
                 }
             }
         }
         // ==============================================================
         #endregion
     } else {
         // physical -> pointer arithmetic
         #region physical storage
         unsafe {
             fixed (double* pInArr1 = inArray1.m_data,
                     pInArr2 = inArray2.m_data) {
                 fixed (double* pOutArr = retBoolArr) {
                     double* poutarr = pOutArr;
                     double* poutend = poutarr + newLength;
                     double* pIn1 = pInArr1;
                     double* pIn2 = pInArr2;
                     while (poutarr < poutend)
                         *poutarr++ = operation(*pIn1++, *pIn2++);
                 }
             }
         }
         #endregion
     }
     return new ILArray<double>(retBoolArr, inDim.ToIntArray());
 }
开发者ID:wdxa,项目名称:ILNumerics,代码行数:65,代码来源:ILMath.cs

示例4: Test_setrange

	   	public void Test_setrange() {
			int errorCode = 0;
			// success? 
			try {
				object[] data = new object[120];
				for (int i = 120; i-- > 0; )
					data[i] = (double)i;
				ILArray<object> A = new ILArray<object>(data, 5, 4, 1, 3, 2, 1);
				//ILFullArray A = B.CreateReference(new ILRange("0:2,4;1,3;0;2,1,0,1"), 3);
				errorCode = 1;
				// new values
				double[] vals = new double[12] { 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 
												 110, 111 };
				object[] valso = new object[12];
				for (int i = 0; i < 12; i++)
					valso[i] = vals[i];
				ILArray<object> C = new ILArray<object>(valso, 2, 2, 3);
				// should replace missing trailing dimension by 0
				// inner singleton dimensions should be ok! 
				A["1,3;0,2;0;0,1,2"] = C;
				errorCode = 2;
				
				double[] results = new double[120] {0,100,  2,101,  4,  5,  6,  7,  8,  9, 10,
					102, 12,103, 14, 15, 16, 17, 18, 19, 20,104, 22,105, 24, 25, 26, 27, 28, 
					29, 30,106, 32,107, 34, 35, 36, 37, 38, 39, 40,108, 42,109, 44, 45, 46, 
					47, 48, 49, 50, 110, 52, 111, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 
					65, 66, 67, 68, 69, 70, 71,  72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 
					83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99,100,
					101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119};
				ILIterator<object> I = A.CreateIterator(ILIteratorPositions.ILStart, 0);
				int count = 0;
				do
				{
					if (((Double)I.Value).CompareTo(results[count++]) != 0)
						throw new Exception();
					I.Increment();
				} while (!I.IsAtStart());
				// complain if dimensions do not match
				errorCode = 3;
				ILArray<object> D = new ILArray<object>(new object[4] { 1, 1, 1, 1 }, 1, 2, 2);
				try {
					A["0,1,0,0:2"] = D;
                    throw new Exception("setrange should complain if dimensions do not match!"); 
				} catch (ILArgumentException) {
					
				}
				errorCode = 4; 
				Success("Test_setrange successful.");
			}
			catch (Exception e) {
				Error("Test_setrange failed at step: " + errorCode + " Msg: " + e.Message);
			}
		}
开发者ID:wdxa,项目名称:ILNumerics,代码行数:53,代码来源:TESTILStorage.cs

示例5: Test_tmpPerfCount

        public void Test_tmpPerfCount() {
            double [] data = new double[1000*1000*10];
            ILArray<double> A = new ILArray<double>(data, 1000, 1000, 10);
            ILPerformer p = new ILPerformer(); 
                        
            p.Tic();
            for (int i = 0; i < 10000000; i++) {
                A.getBaseIndex(i); 
            }
            p.Toc();
            Info("1000x1000x10: dense GetBaseIndex needed: " + p.Duration + " ms");

            ILIterator<double> it = A.CreateIterator();
            p.Tic();
            do {
                it.Increment(); 
            } while(!it.IsAtStart());
            p.Toc();
            Info("1000x1000x10: dense Iterator needed: " + p.Duration + " ms");
            
            A = (ILArray<double>)A[1,""];
            p.Tic();
            for (int i = 0; i < 10000000; i++) {
                A.getBaseIndex(i);
            }
            p.Toc();
            Info("1000x1000x10: ref. GetBaseIndex needed: " + p.Duration + " ms");

            it = A.CreateIterator();
            p.Tic();
            do {
                it.Increment();
            } while (!it.IsAtStart());
            p.Toc();
            Info("1000x1000x10: ref Iterator needed: " + p.Duration + " ms");
            p.Tic(); 
        }
开发者ID:wdxa,项目名称:ILNumerics,代码行数:37,代码来源:TESTILStorage.cs

示例6: Test_Deserialize

        public void Test_Deserialize() {
            int errorCode = 0;
            try {
                {
                    String[] data = new String[1000];
                    String filename = "ILFullArray_SerializeTest1.ils";
                    for (int i = 0; i < data.Length; i++)
                        data[i] = "Datum Nr." + i;

                    ILArray<String> A = new ILArray<String>(data, 10, 20, 5);
                    // full storage, was: A 
                    BinaryFormatter bf = new BinaryFormatter();
                    FileStream fs = new FileStream(filename, FileMode.Open);
                    ILArray<String> ADS = (ILArray<String>)bf.Deserialize(fs);
                    fs.Close();
                    
                    if (ADS.Dimensions.NumberOfElements != 1000)
                        throw new Exception("Object has wrong size! Expected: 1000, Found: " + ADS.Dimensions.NumberOfElements);
                    ILIterator<String> I1 = A.CreateIterator(ILIteratorPositions.ILStart,0 );
                    ILIterator<String> I2 = ADS.CreateIterator(ILIteratorPositions.ILStart,0 );
                    for (int i = 0; i < A.Dimensions.NumberOfElements; i++) {
                        if (((String)I1.Value).CompareTo((String)I2.Value) != 0)
                            throw new Exception("Values did not match! ");
                    }

                    // reference storage, was : AR1
                    filename = "ILFullArray_SerializeTest2.ils";
                    fs = new FileStream(filename, FileMode.Open);
                    ILArray<String> AR1DS = (ILArray<String>)bf.Deserialize(fs);
                    fs.Close();
                    ILArray<String> AR1 = (ILArray<String>)A["0:8;3:18;0:end"];

                    if (AR1DS.Dimensions.NumberOfElements != AR1.Dimensions.NumberOfElements)
                        throw new Exception("Object has wrong size! Expected: " 
                            + AR1.Dimensions.NumberOfElements + ", Found: " 
                            + AR1DS.Dimensions.NumberOfElements);
                    I1 = AR1.CreateIterator(ILIteratorPositions.ILStart, 0);
                    I2 = AR1DS.CreateIterator(ILIteratorPositions.ILStart, 0);
                    for (int i = 0; i < AR1.Dimensions.NumberOfElements; i++) {
                        if (((String)I1.Value).CompareTo((String)I2.Value) != 0)
                            throw new Exception("Values did not match! ");
                    }

                    // if reference storage saved effective memory - keep it as reference
                    errorCode = 3;
                    filename = "ILFullArray_SerializeTest3.ils";
                    fs = new FileStream(filename, FileMode.Open);
                    ILArray<String> AR2DS = (ILArray<String>)bf.Deserialize(fs);
                    fs.Close();
                    ILArray<String> AR2 = (ILArray<String>)A["0:end,0:end;0:end,0:end;0:end"];
                    if (AR2DS.Dimensions.NumberOfElements != AR2.Dimensions.NumberOfElements)
                        throw new Exception("Object has wrong size! Expected: "
                            + AR2.Dimensions.NumberOfElements + ", Found: "
                            + AR2DS.Dimensions.NumberOfElements);
                    I1 = AR2.CreateIterator(ILIteratorPositions.ILStart, 0);
                    I2 = AR2DS.CreateIterator(ILIteratorPositions.ILStart, 0);
                    for (int i = 0; i < AR2.Dimensions.NumberOfElements; i++) {
                        if (((String)I1.Value).CompareTo((String)I2.Value) != 0)
                            throw new Exception("Values did not match! ");
                    }

                    // test if small reference would NOT store full data array
                    errorCode = 4;
                    filename = "ILFullArray_SerializeTest4.ils";
                    fs = new FileStream(filename, FileMode.Open);
                    ILArray<String> AR3DS = (ILArray<String>)bf.Deserialize(fs);
                    fs.Close();
                    ILArray<String> AR3 = A[3,3,1];
                    if (AR3DS.m_data.Length != 1 || ((String)AR3DS.m_data[0]).CompareTo("Datum Nr.233") != 0)
                        throw new Exception("Unvalid deserialized scalar storage!");
                    errorCode = 5;
                    // clean up . delete all test files 
                    File.Delete("ILFullArray_SerializeTest1.ils");
                    File.Delete("ILFullArray_SerializeTest2.ils");
                    File.Delete("ILFullArray_SerializeTest3.ils");
                    File.Delete("ILFullArray_SerializeTest4.ils"); 
                }
                Success("Test_Deserialize successfull");
            } catch (SerializationException e) {
                Error("Test_Deserialize failed at errorCode: " + errorCode + " due: " + e.Message);
            } catch (Exception e) {
                Error("Test_Deserialize failed at errorCode: " + errorCode + " due: " + e.Message);
            }
        }
开发者ID:wdxa,项目名称:ILNumerics,代码行数:84,代码来源:TESTILStorage.cs

示例7: Test_Iterator_Performance

        public void Test_Iterator_Performance() {
            int errorCode = 0;
            // success? 
            try {
				double[] data = new double[4 * 3 * 2] {0, 1,2,3,4,5,6,7,8,9,10
										,11,12,13,14,15,16,17,18,19,20,21,22,23 };
				ILArray<double> A = new ILArray<double>(data, 4,3,2);
				ILArray<double> Ar = (ILArray<double>)A.GetShifted(2); 
				ILPerformer p = new ILPerformer();
				int counter = 0; 
				ILIterator<double> it = A.CreateIterator(ILIteratorPositions.ILEnd, 0);
				ILIterator<double> it1 = Ar.CreateIterator(ILIteratorPositions.ILEnd, 2);
				double val = 0.0; 
				do {
					if (it.Increment() != counter++)
						throw new Exception("invalid iterator value!"); 
				} while (!it.IsAtEnd());
				// shifted (1) physical
				errorCode = 1; 
				double[] results = new double[24] {0,4,8,12,16,20,1,5,9,13,17,21
										,2,6,10,14,18,22,3,7,11,15,19,23};
				it = A.CreateIterator(ILIteratorPositions.ILEnd, 1);
				counter = 0; 
				do {
					if (it.Increment() != results[counter])
						throw new Exception("invalid phy iterator value!");
					if (it1.Increment() != results[counter++])
						throw new Exception("invalid ref iterator value!");
				} while (!it.IsAtEnd());
				results = new double[24] {0,4,8,12,16,20,1,5,9,13,17,21
										,2,6,10,14,18,22,3,7,11,15,19,23};

				data = new double[1000 * 1000 * 10];
				A = new ILArray<double>(data, 1000, 1000, 10);
                //// test the IEnumerable way of doing this
                //errorCode = 1;
				
                //p.Tic();
                //foreach (double v in A) {
                //    val = v;
                //}
                //p.Toc();
                //Info("[1000 x 1000 x 10] IEnumarable 'foreach' Iterator: " + p.ToString());

				errorCode = 2; 
				// iterate the classic way: 
                val = 2.23;
				double dura = 0.0, dura1= 0.0;
				double itIncCounter = 0.0;
				it = A.CreateIterator(ILIteratorPositions.ILStart, 0);
				it1 = A.CreateIterator(ILIteratorPositions.ILStart, 1);
				ILPerformer p1 = new ILPerformer();
				do {
					p1.Tic();
					val = it1.Increment();
					p1.Toc();
					dura1 += p1.Duration; // outer time needed 
					
					p.Tic();
					val = it.Increment();
					p.Toc();
					//dummy += Environment.TickCount - it.Dummy;  // internal time needed 
					dura += p.Duration; // outer time needed 
					itIncCounter++;
				} while (itIncCounter < data.Length);
				Info("[1000 x 1000 x 10] ILIterator Phys leadDim: 0 ->" 
					+ dura.ToString() + " leadDim: 1 ->" + dura1.ToString() 
					+ " incCount:" + itIncCounter);

				errorCode = 3;
				ILArray<double> B = (ILArray<double>)A.T;
				p.Tic();
				it = B.CreateIterator(ILIteratorPositions.ILStart, 0);
				it1 = B.CreateIterator(ILIteratorPositions.ILStart, 1);
                dura = 0.0; dura1 = 0.0; itIncCounter = 0; 
				do {
					p1.Tic();
					val = it1.Increment();
					p1.Toc();
					dura1 += p1.Duration; // outer time needed 

					p.Tic();
					val = it.Increment();
					p.Toc();
					//dummy += Environment.TickCount - it.Dummy;  // internal time needed 
					dura += p.Duration; // outer time needed 
					itIncCounter++;
				} while (itIncCounter < data.Length);
				p.Toc();
				Info("[1000 x 1000 x 10] ILIterator - Ref. leadDim: 0 ->"
					+ dura.ToString() + " leadDim: 1 ->" + dura1.ToString()
					+ " incCount:" + itIncCounter);


				Success("Test_Iterator_Performance successful.");
            } catch (Exception e) {
                Error("Test_Iterator_Performance failed at step: " + errorCode + " Msg: " + e.Message);
            }
        }
开发者ID:wdxa,项目名称:ILNumerics,代码行数:99,代码来源:TESTILStorage.cs


注:本文中的ILArray.CreateIterator方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。