本文整理汇总了C#中System.Matrix.Get方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix.Get方法的具体用法?C# Matrix.Get怎么用?C# Matrix.Get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Matrix
的用法示例。
在下文中一共展示了Matrix.Get方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: CreateMatrixUsingStrings
public void CreateMatrixUsingStrings()
{
Matrix matrix = new Matrix("1000", "0100", "0010", "0001");
Assert.AreEqual(4, matrix.Width);
Assert.AreEqual(4, matrix.Height);
for (int x = 0; x < 4; x++)
for (int y = 0; y < 4; y++)
if (x == y)
Assert.IsTrue(matrix.Get(x, y));
else
Assert.IsFalse(matrix.Get(x, y));
}
示例2: CreateEmptyMatrix
public void CreateEmptyMatrix()
{
Matrix matrix = new Matrix(3, 4);
Assert.AreEqual(3, matrix.Width);
Assert.AreEqual(4, matrix.Height);
for (int x = 0; x < 3; x++)
for (int y = 0; y < 4; y++)
Assert.IsFalse(matrix.Get(x, y));
}
示例3: rilassamento
/*
NOTA GENERALE.
I metodi precedenti, steepest descent, rilassamento (per la scelta delle direzioni) e
passo fisso e bisezione (per la ricerca del minimo (o del massimo)
non sono sufficienti da soli.
E' ragionevole scrivere prima alcune funzioni che lavorino separatamente.
Tutte sono incluse nella classe Fmin e hanno gia` implicito il delegate alla funzione
Tutte devono prima verificare che il delegate non sia nullo.
*/
/// <summary>
/// Ricerca per punti
/// </summary>
/// <param name="xk">Punto centrale</param>
/// <param name="range">Meta` ampiezza di ricerca (ammessi valori nulli)</param>
/// <param name="passiU">Numero di passi unilaterali (almeno 1)</param>
/// <param name="xmin">Punto con il valore minore</param>
/// <param name="cicli">Numero di punti calcolati</param>
/// <returns></returns>
public bool Campionamento( Matrix xk,
Matrix range,
MatrixBase<int> passiU,
ref Matrix xmin,
ref int cicli)
{
bool found = false;
int n; // Dimensioni dei vettori
int i; // Contatore
n = xk.Row;
if((range.Row != n) || (passiU.Row != n) || (xmin.Row != n) || (xk.Col != 1) || (range.Col != 1) || (passiU.Col != 1) || (xmin.Col != 1) )
{
return found; // Verifica indici
}
for(i=0; i<n; i++) // Verifica intervalli (ammessi valori nulli)
{
if(range.Get(i,0) < 0.0)
{
return found;
}
}
for(i=0; i<n; i++) // Verifica passi (almeno 1 per lato)
{
if(passiU.Get(i,0) < 1)
{
return found;
}
}
MatrixBase<int> passi = new MatrixBase<int>(n,1); // Matrice dei passi
for(i=0; i<n; i++) // Calcola i passi effettivi (segmenti, non punti)
{
passi.Set(i, 0, passiU.Get(i,0) * 2);
}
Matrix step = new Matrix(n,1);
for(i=0; i<n; i++) // Calcola i passi effettivi
{
step.Set(i, 0, range.Get(i,0)/passi.Get(i,0));
}
Matrix xo = new Matrix(n,1);
for(i=0; i<n; i++) // Calcola i punti di partenza
{
xo.Set(i, 0, xk.Get(i,0) - step.Get(i,0) * passiU.Get(i,0));
}
MatrixBase<int> contatori = new MatrixBase<int>(n,1,0); // Vettore dei contatotri (tutti a 0)
Matrix x = new Matrix(n,1); // Vettore dei valori effettivi
int iinc = -1;
double minimo = double.MaxValue;
double f;
cicli = 0;
bool fine = false;
while(!fine)
{
if(iinc >= 0) // ricalcola nuovo vettore x
{
x.Set( iinc,0, xo.Get(iinc,0) + step.Get(iinc,0) * contatori.Get(iinc,0) );
}
else
{
for(i=0; i<n; i++)
x.Set( i,0, xo.Get(i,0) + step.Get(i,0) * contatori.Get(i,0) );
}
f = Funzione(x); // Calcola la f del punto x attuale
if(f < minimo) // Vede se e` minima (rispetto ai valori trovati finora)
{
minimo = f;
xmin = x.Copy();
found = true;
}
fine = !Incrementa(ref contatori, passi, ref iinc);
cicli++;
}
return found;
}
示例4: SetCells
public void SetCells()
{
Matrix matrix = new Matrix(3, 3);
matrix.Set(0, 0, true);
matrix.Set(1, 1, true);
matrix.Set(2, 2, true);
for (int x = 0; x < 3; x++)
for (int y = 0; y < 3; y++)
if (x == y)
Assert.IsTrue(matrix.Get(x, y));
else
Assert.IsFalse(matrix.Get(x, y));
}
示例5: Convert
/// <summary>
/// Trasforma da coordinate omogenee a Point2D
/// </summary>
/// <param name="pth"></param>
/// <returns></returns>
public static Point2D Convert(Matrix pth)
{
Point2D pt = new Point2D();
for(int i=0; i<Point2D.Dim2D; i++)
pt.Set(i,0,pth.Get(i,0));
return pt;
}