2016-05-16 7 views
0

У меня есть код для проверки сети для процесса OCR. Здесь:Как преобразовать вектор в скаляр, для оператора switch?

%% Set new target data (data testing) data2 = fetest8; % data2 = fetest2; % data2 = fetest3; targetx = zeros(1,204); targetx (:,1:50) = 1; targetx (:,51:52) = 2; targetx (:,53:62) = 3; targetx (:,63:82) = 4; targetx (:,83) = 5; targetx (:,84:85) = 6; targetx (:,86:92) = 7; targetx (:,93:95) = 8; targetx (:,96:105) = 9; targetx (:,106) = 10; targetx (:,107:111) = 11; targetx (:,112:116) = 12; targetx (:,117:126) = 13; targetx (:,127:176) = 14; targetx (:,177) = 15; targetx (:,178:180) = 16; targetx (:,181) = 17; targetx (:,182:201) = 18; targetx (:,202:204) = 19; 

prediksi = round(sim (net, data2)); %contain target in matrix, data type: double 

switch (prediksi) 
    case '1' 
     fprintf ('Alif\n'); 
    case '2' 
     fprintf ('Baa\n'); 
    case '3' 
     fprintf ('Haaa\n'); 
    case '4' 
     fprintf ('Daal\n'); 
    case '5' 
     fprintf ('Raa\n'); 
    case '6' 
     fprintf ('Siin\n'); 
    case '7' 
     fprintf ('Saad\n'); 
    case '8' 
     fprintf ('Thaaa\n'); 
    case '9' 
     fprintf ('Ayn\n'); 
    case '10' 
     fprintf ('Faa\n'); 
    case '11' 
     fprintf ('Gaaf\n'); 
    case '12' 
     fprintf ('Kaaf\n'); 
    case '13' 
     fprintf ('Laam\n'); 
    case '14' 
     fprintf ('Miim\n'); 
    case '15' 
     fprintf ('Nuun\n'); 
    case '16' 
     fprintf ('Haa\n'); 
    case '17' 
     fprintf ('Waaw\n'); 
    case '18' 
     fprintf ('Yaa\n'); 
    case '19' 
     fprintf ('Kaaf\n'); 
    otherwise 
     fprintf ('X\n');  
end 

Screenshoot из prediksi: enter image description here

1 до 204, prediksi 1x24 дважды.

enter image description here У меня получилась эта ошибка: выражение SWITCH должно быть скалярной или строковой константой. Как исправить эту ошибку?

Любая помощь была бы очень признательна.

+1

Что делает 'sim (net, data2)' output? – Dan

ответ

1

Здесь prediksi будет матрицей строк размером 1xm. Так что не могу использовать switch(prediksi). Вместо этого вы должны использовать цикл и делать switch (prediksi(i)). Вот обновленный код

%% Set new target data (data testing) data2 = fetest8; % data2 = fetest2; % data2 = fetest3; targetx = zeros(1,204); targetx (:,1:50) = 1; targetx (:,51:52) = 2; targetx (:,53:62) = 3; targetx (:,63:82) = 4; targetx (:,83) = 5; targetx (:,84:85) = 6; targetx (:,86:92) = 7; targetx (:,93:95) = 8; targetx (:,96:105) = 9; targetx (:,106) = 10; targetx (:,107:111) = 11; targetx (:,112:116) = 12; targetx (:,117:126) = 13; targetx (:,127:176) = 14; targetx (:,177) = 15; targetx (:,178:180) = 16; targetx (:,181) = 17; targetx (:,182:201) = 18; targetx (:,202:204) = 19; 

prediksi = round(sim (net, data2)); %contain target in matrix, data type: double 

for i=1:size(prediksi,2) 
switch (prediksi(i)) 
    case 1 
     fprintf ('Alif\n'); 
    case 2 
     fprintf ('Baa\n'); 
    case 3 
     fprintf ('Haaa\n'); 
    case 4 
     fprintf ('Daal\n'); 
    case 5 
     fprintf ('Raa\n'); 
    case 6 
     fprintf ('Siin\n'); 
    case 7 
     fprintf ('Saad\n'); 
    case 8 
     fprintf ('Thaaa\n'); 
    case 9 
     fprintf ('Ayn\n'); 
    case 10 
     fprintf ('Faa\n'); 
    case 11 
     fprintf ('Gaaf\n'); 
    case 12 
     fprintf ('Kaaf\n'); 
    case 13 
     fprintf ('Laam\n'); 
    case 14 
     fprintf ('Miim\n'); 
    case 15 
     fprintf ('Nuun\n'); 
    case 16 
     fprintf ('Haa\n'); 
    case 17 
     fprintf ('Waaw\n'); 
    case 18 
     fprintf ('Yaa\n'); 
    case 19 
     fprintf ('Kaaf\n'); 
    otherwise 
     fprintf ('X\n');  
end 
end 
+0

Спасибо, он дает мне выход, но весь ответ «X» Никто не соответствует. Выход prediksi представляет собой матрицу, содержащую данные 1x204 в диапазоне 1-19 (значение targetx). Я все еще действительно не понимал. Ваше объяснение было бы полезно. –

+0

Не могли бы вы обновить свой вопрос с помощью экрана «prediksi» в редакторе переменных. Я не могу дать вам какое-либо объяснение, пока не увижу, что находится в «prediksi». –

+1

'prediksi' не является символьным массивом, измените его с« case »1'' на' case 1' – Matt