Нужна помощь в распознавании символов - PullRequest
0 голосов
/ 26 марта 2019

Я не использую операторы if-else, где они написаны, если ind == 1 ||ind == 2 что это сравнивает и как можно сказать, что если оно равно 1 или 2, то буква A, 3 или 4 буква B и т. д. Кто-нибудь может мне помочь в этом?Операторы if-else, как мы можем произвольно дать любое число или сравниваемые числа, имеют некоторое значение?

% Это функция, вызываемая из основного файла.

function letter=readLetter(snap)

load NewTemplates 
  snap=imresize(snap,[42 24]); 
  rec=[ ];

  for n=1:length(NewTemplates)
      cor=corr2(NewTemplates{1,n},snap); 
      rec=[rec cor]; 
  end

  ind=find(rec==max(rec));
  display(ind);

% Alphabets listings.
  if ind==1 || ind==2
     letter='A';

  elseif ind==3 || ind==4

     letter='B';

  elseif ind==5

     letter='C';

  elseif ind==6 || ind==7

     letter='D';

  elseif ind==8

     letter='E';

  elseif ind==9

     letter='F';

                  ``` like so up to Z and 0 -9 ```
  end
  end

Ответы [ 2 ]

0 голосов
/ 30 марта 2019

Я получил ответ после некоторой отладки.Сравниваемые значения поступают из файла .mat, который создается MATLAB для хранения двоичных файлов изображений.1 2 3 ... являются столбцами соответствующих букв, хранящихся в файле .mat.Я преобразовал двоичный файл в изображение, и это было правильно.

0 голосов
/ 26 марта 2019

В операторе Matlab OR можно записать ||. Например, в вашем случае:

if ind==1 || ind==2
    letter='A';

Означает: если ind равно 1 ИЛИ ind равно 2 - выполнить инструкцию (Установите letter переменную 'A').

Однако в этом случае switch будет иметь больше смысла. Например:

switch ind
    case {1,2}
        letter='A';
    case {3,4}
        letter='B';
    case 5
        letter='C';

 ``` like so up to Z and 0 -9 ```

    otherwise
        disp('Nothing matches')
...