本文整理汇总了C#中Matrix.GetRowVector方法的典型用法代码示例。如果您正苦于以下问题:C# Matrix.GetRowVector方法的具体用法?C# Matrix.GetRowVector怎么用?C# Matrix.GetRowVector使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Matrix
的用法示例。
在下文中一共展示了Matrix.GetRowVector方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: RecognizeAsynchronously
public static Matrix RecognizeAsynchronously(Matrix weights, Vector input)
{
Random rand = new Random(DateTime.Now.Millisecond);
Vector oldOutput = input.Clone();
Vector newOutput = input.Clone();
int iterations = 0;
int equalTimes = 0;
while (true)
{
Console.WriteLine("iteration: {0}", iterations++);
Console.WriteLine(oldOutput);
for (int i = 0; i < input.Length; ++i)
{
newOutput[i] = weights.GetRowVector(i).ArrayMultiply(newOutput).Sum() >= 0 ? +1 : -1;
}
Console.WriteLine(newOutput);
if (newOutput.SequenceEqual(oldOutput)) //equalTimes += 1;
//else equalTimes -= 1;
//if (equalTimes >= 5)
{
Console.WriteLine("Old and new are equal");
Matrix recognized = newOutput.ToMatrixByColumns(columnSize: (int)Math.Sqrt(input.Length));
return recognized;
}
oldOutput = newOutput.Clone();
}
}
示例2: RecognizeSynchronously
public static int RecognizeSynchronously(Matrix weights, Vector input, Vector[] samples)
{
Console.WriteLine("Recognize()");
Console.WriteLine("input:");
Vector oldOutput = input.Clone();
int recognizedSampleIndex;
int iterations = 0;
while (true)
{
iterations += 1;
Console.WriteLine("iteration: {0}", iterations);
Vector newOutput = oldOutput.Clone();
for (int r = 0; r < weights.RowCount; ++r)
{
Vector weightsRow = weights.GetRowVector(r);
newOutput[r] = weightsRow.ArrayMultiply(oldOutput).Sum() >= 0 ? +1 : -1;
}
if (newOutput.SequenceEqual(oldOutput))
{
for (int j = 0; j < samples.Length; ++j)
{
if (samples[j].SequenceEqual(newOutput))
{
recognizedSampleIndex = j;
Console.WriteLine("Recognized to be {0}", j);
return recognizedSampleIndex;
}
}
}
//Console.WriteLine("output:");
//Console.WriteLine(newOutput.ToPrettyString());
oldOutput = newOutput.Clone();
if (iterations > 100)
{
Console.WriteLine("Coulnd't recognize");
return -1;
}
}
}
示例3: LLTSolve
// this is from https://ece.uwaterloo.ca/~ece204/howtos/forward/ hehehh
private Vector LLTSolve(Matrix L, Vector b)
{
int i = 0;
int n = b.Count();
// forward sub to solve Lz = b
Vector z = Vector.Zeros(n);
for (i = 0; i < n; i++)
{
z[i] = (b[i] - (L.GetRowVector(i) * z)) / L[i, i];
}
// back sub to solve L'x = z
Vector x = Vector.Zeros(n);
var Lt = Matrix.Transpose(L);
for (i = n-1; i >= 0; i--)
{
x[i] = (z[i] - (Lt.GetRowVector(i) * x)) / Lt[i, i];
}
return x;
}