2016-05-16 4 views
0

OCRプロセスのネットワークをテストするコードがあります。 ここにある:prediksiのベクトルをスカラーに変換するにはどうすればよいですか?

%% 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: enter image description here

1 204まで、ダブル1x24 prediksi。

enter image description here 「SWITCH式はスカラー定数または文字列定数でなければなりません。 このエラーを解決するにはどうすればよいですか?

非常に参考になります。

+1

'sim(net、data2)'出力は何ですか? – 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出力は、範囲1〜19(targetx値)の1x204データを含むマトリックスです。 私はまだ本当に理解できませんでした。あなたの説明が役に立つでしょう。 –

+0

変数エディタの 'prediksi'のスクリーンショットで質問を更新できますか?私はあなたが 'プレディクシー(prediksi) 'にあるものを見るまで、何の説明もしない。 –

+1

'prediksi'は文字配列ではありません。' case '1''から 'case 1'に変更します。 – Matt

関連する問題