Быстрая средняя квадратная функция различия

Рассмотрим NSString integerValue - он возвращает NSInteger. Однако он будет принимать некоторые строки, которые не являются полностью числовыми, и не предоставляет механизм для определения строк, которые не являются числовыми вообще. Это может или не может быть приемлемым.

Например, " 13 " -> 13, "42foo" -> 42 и "helloworld" -> 0.

Удачного кодирования.


Теперь, поскольку вышеизложенное было своего рода касательной к вопросу, см. , чтобы определить, является ли строка числовой . Код взят по ссылке, с добавлением комментариев:

BOOL isNumeric(NSString *s)
{
   NSScanner *sc = [NSScanner scannerWithString: s];
   // We can pass NULL because we don't actually need the value to test
   // for if the string is numeric. This is allowable.
   if ( [sc scanFloat:NULL] )
   {
      // Ensure nothing left in scanner so that "42foo" is not accepted.
      // ("42" would be consumed by scanFloat above leaving "foo".)
      return [sc isAtEnd];
   }
   // Couldn't even scan a float :(
   return NO;
}

Выше работает только с scanFloat - например, нет scanInt - потому что диапазон с плавающей точкой намного больше , чем у целого (даже 64-битного целого).

Эта функция проверяет «полностью числовые» и принимает "42" и "0.13E2", но отклоняет " 13 ", "42foo" и "helloworld".

8
задан tkw954 10 June 2009 в 01:55
поделиться

1 ответ

Вы можете расширить свое определение ASDF следующим образом:

for i = 1:N
    asdf(i) = (sum(x1.^2) - 2*sum(x1*circshift(x2,i-1)) + sum(x2.^2))/N;
end

, что упрощается до

asdf = (-2*ifft(fft(x1).*conj(fft(x2))) + sum(x1.^2) + sum(x2.^2))/N;
7
ответ дан 5 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: