Попробуйте
->addValidator('Digits', false);
, или
->addValidator('Digits');
Вы предполагаете, что к контрольным разрядам это должно иметь длину строки так или иначе.
кроме того, мне нравится делать некоторые пользовательские сообщения об ошибках как это:
$firstName->getValidator('NotEmpty')->setMessage('Please enter your first name');
Это позволяет Вам "получать" блок проверки допустимости и затем "устанавливать" свойства его.
Производительность FFTW устанавливает стандарт для БПФ произвольной длины - особенно для не степенных двух длин в двух и более измерениях. Коммерческая лицензия на FFTW составляет 5000 долларов, что может соответствовать вашему бюджету, а может и не соответствовать его.
Тем не менее, похоже, что у вас проблема с одномерной обработкой сигнала, и в этом случае у вас есть еще несколько вариантов - и если вы можете дополнительно либо заполнить, либо сэмплировать свои данные до длины, равной степени двойки, то многие библиотеки предложат разумные спектакль. Ознакомьтесь с этим списком алгоритмов БПФ, которые FFTW использовала для сравнения - многие из них бесплатны, а некоторые могут подойти. Я бы, вероятно, начал со старых добрых числовых рецептов , которые предлагают простую реализацию 2, 1D FFT бесплатно и немного набора текста - и будут очень эффективными с точки зрения памяти. человеческий голос.
Give the Fastest Fourier Transform in the West (FFTW) a go, The performance is good compared to others, but it is not completely free. See the details on commercial use here. Obviously being a c library you should have no problem linking it as a static library to your iphone app.
Я обернул библиотеку БПФ Оуры в Objective-C. Код Оуры сравним по производительности с FFTW, но полностью и совершенно бесплатный.
Этот код использует двойную точность и имеет несколько встроенных типов окон (прямоугольное, Блэквелла, Треугольник, Хэмминга). Я использую код БПФ Оуры для реализации метода Велча , который будет генерировать гораздо более гладкие спектры при просмотре с течением времени.
Проверьте это на: http://github.com/alexbw/iPhoneFFT
Вот ссылка на первоисточник численного программного обеспечения Оура:
http://www.kurims.kyoto-u.ac.jp/~ooura/
Я использовал многие БПФ Оура в течение многих лет, я должен послать ему как минимум "domo", и я использую его реальный radix-4 в нескольких разрабатываемых приложениях для iPad и iPhone. Я перевел код для работы с 32-битной одинарной точностью для производительности на ARM. Если посмотреть на ассемблер, созданный с помощью XCode 3.2.2, то он очень хорошо векторизуется с помощью инструкций NEON SIMD. На самом деле я был наполовину разочарован, так как сам хотел немного векторизовать код для еще большей производительности. Эти оптимизации невозможны без предварительного перевода БПФ в одинарную точность.
Хотя я использую Objective-C уже много лет, активно разрабатываю на нем и даже преподавал на нем курс объектно-ориентированного программирования, я не стал готовить такую обертку (хотя я сделал то же самое в 1992 году с другим БПФ) по причинам производительности.
Я не тестировал FFTW против FFT Ooura по крайней мере 10 лет, но когда я это делал, библиотека Ooura была быстрее для 1024-точечных реальных БПФ. Однако вполне возможно, что сейчас FFTW может работать намного лучше - но лицензировать ее и кросс-компилировать для ARM неудобно, а я всегда считал FFTW слишком громоздкой и навязчивой для моих потребностей в DSP. VecLib от Apple очень хорош, но, к сожалению, они не портировали его на iPhoneOS. Я открыл запрос функции в BugReporter, и вы тоже можете это сделать: https://bugreport.apple.com/
iPhone OS4 SDK будет включать фреймворк Accelerate , который (наконец) предоставит нам написанные Apple функции БПФ.
Accelerate предоставляет сотни математические функции, оптимизированные для iPhone и iPod touch, включая процедуры обработки сигналов, быстрые преобразования Фурье, базовые векторные и матричные операции, и стандартные отраслевые функции для факторизации матриц и решения систем линейных уравнений.