Griboks, а вот вопрос, при разном числе коэффициентов, сами коэффициенты меняются или нет?
Я заметил что разное число коэффициентов влияет на амплитуду.
То есть точнее если я делаю преобразование фурье на 10 коэффициентов А, Б. Первые 10 Аi Bi будут равны первым 10 коэффициентам А Б преобразования на 10000 коэффициентов?
И сами коэффициенты должны уменьшаться? (В примерах обычно они уменьшаются).
По логике коэффициенты должны уменьшаться. А апроксимация улучшаться. Но у меня почему ни так. С примером Sin(X)*X К примеру. На 100 точках. На 10 точках уже все норм. А с 50ой начинает ухудшаться, появляться разрывы.
Проблема в основном появляется, когда к примеру рисуешь кривую, мышкой по Канвасу и ее вычисляешь, хотя вроде рисуешь чистую Sin-у. Но Фурье прям Хоть И на 0.9 Коррелирует. Но прям жутко амплитуда скачет..
-
}
public virtual void Solve(int M)
{
Coefs=new List<Complex>((int)MaxM);
this.M = M;
for (int i = 0; i < MaxM*2; i++)
{
Coefs.Add( solveCoefs(i));
}
isSolved = true;
}
protected virtual Complex solveCoefs(double j)
{
double sumA = 0;
double sumB = 0;
double i = 0;
foreach (var point in Points) // points входные данные.
{
//double _x = -Math.PI + 2.0 * Math.PI * (double)x / (double)N;
double phi = normalizeX(point.Real) * j;
phi = phi * W;
sumA += Math.Cos(phi) * point.Imaginary;
sumB += Math.Sin(phi) * point.Imaginary;
// i++;
}
return new Complex (sumA / MaxM, sumB / MaxM); // MaxM=N/2
}
// получаю обратно по коффициентам значения
public virtual double FuncCalc(double x,List<Complex> coefs)
{
x = W * normalizeX(x); // (x-MinX)/(MaxX-MinX)* N;
double sum = 0;
for (int i = 0; i < M; i++)
// M число кэфоф которые беру. По идеи чем больше тем точнее. Но чет не выходит.
{
sum += coefs[i].Real * Math.Cos(x * i) + coefs[i].Imaginary * Math.Sin(x * i);
}
return sum - coefs[0].Real/2 ;
}
спс, частично знаю, как просто матрицы, типа оператора Собеля, и там еще разные.
А это вообще что-то другое. или слишком сложное Даже по описанию. С Комплексными числами.
Фурье нужно. Потому что https://habr.com/ru/post/266129/
Здесь в алгоритме это 1ое как подготовка, а дальше какие быстрые преобразования фурье, где опять не понимаю что умножать. Да и часто в статьях фигурируют эти терминыю
Вот прмиер реализации Быстрого преобразования фурье. Только что преобразуют. Что на входе, что на выходе. Мне бы хоть раз в 1000 статей увидеть, какие цифры то подаются. Проследить так сказать путь 1 пикселя. https://ru.wikibooks.org/wiki/%D0%A0%D0%B5%D0%B0%D...
Что за Complex[], на входе, как его составить. Вот у меня массив пкслеей, как его в комлпесный массив загнать.
Drno, тяжело, отказаться, все таки мне дизайн больше нравиться. Более читабельный. Как-то на первый взгляд, кажется что я намного быстрее в разы считываю заголовки, фильтрую. Хз как объяснить.
Сергей, я же привел аналогичный код. Нет, не работает. События выполняются последовательно. Пока дойдет время до второго нажатия, первый уже отработает и вернет это значение в true.
mkone112, не зна, что за ерунда, но мой вопрос кто-то отредактировал. И смысл потерян. Вопрос был примерно "Где и как применить знания по нейросетям". В какой программе.
Я заметил что разное число коэффициентов влияет на амплитуду.
То есть точнее если я делаю преобразование фурье на 10 коэффициентов А, Б. Первые 10 Аi Bi будут равны первым 10 коэффициентам А Б преобразования на 10000 коэффициентов?
И сами коэффициенты должны уменьшаться? (В примерах обычно они уменьшаются).
По логике коэффициенты должны уменьшаться. А апроксимация улучшаться. Но у меня почему ни так. С примером Sin(X)*X К примеру. На 100 точках. На 10 точках уже все норм. А с 50ой начинает ухудшаться, появляться разрывы.
Проблема в основном появляется, когда к примеру рисуешь кривую, мышкой по Канвасу и ее вычисляешь, хотя вроде рисуешь чистую Sin-у. Но Фурье прям Хоть И на 0.9 Коррелирует. Но прям жутко амплитуда скачет..
-