pls help me shortened my code.. i really need your help. .Especially in the if elseif statement.
    6 views (last 30 days)
  
       Show older comments
    
here's what i have.
Fs = 8000;
t = 0.25;
n =1:ceil(t*Fs);
tone1 = sin(2*pi*(697/Fs)*n) + sin(2*pi*(1209/Fs)*n);      %tone1=key one(1)
tone2 = sin(2*pi*(697/Fs)*n) + sin(2*pi*(1336/Fs)*n);      %tone2=key two(2)
tone3 = sin(2*pi*(697/Fs)*n) + sin(2*pi*(1477/Fs)*n);      %tone3=key three(3)
tone4 = sin(2*pi*(770/Fs)*n) + sin(2*pi*(1209/Fs)*n);      %tone4=key four(4)
tone5 = sin(2*pi*(770/Fs)*n) + sin(2*pi*(1336/Fs)*n);      %tone5=key five(5)
tone6 = sin(2*pi*(770/Fs)*n) + sin(2*pi*(1477/Fs)*n);      %tone6=key six(6)
tone7 = sin(2*pi*(852/Fs)*n) + sin(2*pi*(1209/Fs)*n);      %tone7=key seven(7)
tone8 = sin(2*pi*(852/Fs)*n) + sin(2*pi*(1336/Fs)*n);      %tone8=key eight(8)
tone9 = sin(2*pi*(852/Fs)*n) + sin(2*pi*(1477/Fs)*n);      %tone9=key nine(9)
tone0 = sin(2*pi*(941/Fs)*n) + sin(2*pi*(1336/Fs)*n);      %tone0=key zero(0)
tone10 = sin(2*pi*(941/Fs)*n) + sin(2*pi*(1209/Fs)*n);     %tone10=key asterisk(*)
tone11 = sin(2*pi*(941/Fs)*n) + sin(2*pi*(1477/Fs)*n);     %tone11=key number sign(#)
v=input('Number of keys to enter: ');
display('KEY0 = 0');
display('KEY1 = 1');
display('KEY2 = 2');
display('KEY3 = 3');
display('KEY4 = 4');
display('KEY5 = 5');
display('KEY6 = 6');
display('KEY7 = 7');
display('KEY8 = 8');
display('KEY9 = 9');
display('KEY* = 10');
display('KEY# = 11');
w=input('Enter key/s: ' ,'s');
x=str2num(w); %#ok<ST2NM>
y=length(x);
   while y ~= v; 
      display ('Error''Check the entered number');
     w=input('Enter key/s again: ' ,'s');
         x=str2num(w); 
         y=length(x);
   end
  if v==1;                  %when the number of key/s entered is/are one(1)
      a=x(1,1);
      if a==0;subplot(4,3,11);plot(tone0); sound(tone0);xlabel('KEY0');
      elseif a==1;subplot(4,3,1); plot(tone1); sound(tone1);xlabel('KEY1');
      elseif a==2; subplot(4,3,2);plot(tone2);sound(tone2);xlabel('KEY2');
      elseif a==3;subplot(4,3,3);plot(tone3); sound(tone3);xlabel('KEY3');
      elseif a==4;subplot(4,3,4);plot(tone4); sound(tone4);xlabel('KEY4');
      elseif a==5;subplot(4,3,5);plot(tone5); sound(tone5);xlabel('KEY5');
      elseif a==6;subplot(4,3,6);plot(tone6); sound(tone6);xlabel('KEY6');
      elseif a==7;subplot(4,3,7);plot(tone7); sound(tone7);xlabel('KEY7');
      elseif a==8;subplot(4,3,8);plot(tone8); sound(tone8);xlabel('KEY8');
      elseif a==9;subplot(4,3,9);plot(tone9); sound(tone9);xlabel('KEY9');
      elseif a==10;subplot(4,3,10);plot(tone10);sound(tone10);xlabel('KEY*');
      elseif a==11;subplot(4,3,12);plot(tone11);sound(tone11);xlabel('KEY#');
      end
   elseif v==2;               %when the number of key/s entered is/are tw0(2)
      a=x(1,1);
      if a==0;subplot(4,3,11);plot(tone0); sound(tone0);xlabel('KEY0');
      elseif a==1;subplot(4,3,1); plot(tone1); sound(tone1);xlabel('KEY1');
      elseif a==2; subplot(4,3,2);plot(tone2);sound(tone2);xlabel('KEY2');
      elseif a==3;subplot(4,3,3);plot(tone3); sound(tone3);xlabel('KEY3');
      elseif a==4;subplot(4,3,4);plot(tone4); sound(tone4);xlabel('KEY4');
      elseif a==5;subplot(4,3,5);plot(tone5); sound(tone5);xlabel('KEY5');
      elseif a==6;subplot(4,3,6);plot(tone6); sound(tone6);xlabel('KEY6');
      elseif a==7;subplot(4,3,7);plot(tone7); sound(tone7);xlabel('KEY7');
      elseif a==8;subplot(4,3,8);plot(tone8); sound(tone8);xlabel('KEY8');
      elseif a==9;subplot(4,3,9);plot(tone9); sound(tone9);xlabel('KEY9');
      elseif a==10;subplot(4,3,10);plot(tone10);sound(tone10);xlabel('KEY*');
      elseif a==11;subplot(4,3,12);plot(tone11);sound(tone11);xlabel('KEY#');
      end
      pause(0.5);
      b=x(1,2);
      if b==0;subplot(4,3,11);plot(tone0); sound(tone0);xlabel('KEY0');
      elseif b==1;subplot(4,3,1); plot(tone1); sound(tone1);xlabel('KEY1');
      elseif b==2; subplot(4,3,2);plot(tone2);sound(tone2);xlabel('KEY2');
      elseif b==3;subplot(4,3,3);plot(tone3); sound(tone3);xlabel('KEY3');
      elseif b==4;subplot(4,3,4);plot(tone4); sound(tone4);xlabel('KEY4');
      elseif b==5;subplot(4,3,5);plot(tone5); sound(tone5);xlabel('KEY5');
      elseif b==6;subplot(4,3,6);plot(tone6); sound(tone6);xlabel('KEY6');
      elseif b==7;subplot(4,3,7);plot(tone7); sound(tone7);xlabel('KEY7');
      elseif b==8;subplot(4,3,8);plot(tone8); sound(tone8);xlabel('KEY8');
      elseif b==9;subplot(4,3,9);plot(tone9); sound(tone9);xlabel('KEY9');
      elseif b==10;subplot(4,3,10);plot(tone10);sound(tone10);xlabel('KEY*');
      elseif b==11;subplot(4,3,12);plot(tone11);sound(tone11);xlabel('KEY#');
      end
      pause(0.5);  
elseif v==3;                   %when the number of key/s entered is/are three(3)
      a=x(1,1);
      if a==0;subplot(4,3,11);plot(tone0); sound(tone0);xlabel('KEY0');
      elseif a==1;subplot(4,3,1); plot(tone1); sound(tone1);xlabel('KEY1');
      elseif a==2; subplot(4,3,2);plot(tone2);sound(tone2);xlabel('KEY2');
      elseif a==3;subplot(4,3,3);plot(tone3); sound(tone3);xlabel('KEY3');
      elseif a==4;subplot(4,3,4);plot(tone4); sound(tone4);xlabel('KEY4');
      elseif a==5;subplot(4,3,5);plot(tone5); sound(tone5);xlabel('KEY5');
      elseif a==6;subplot(4,3,6);plot(tone6); sound(tone6);xlabel('KEY6');
      elseif a==7;subplot(4,3,7);plot(tone7); sound(tone7);xlabel('KEY7');
      elseif a==8;subplot(4,3,8);plot(tone8); sound(tone8);xlabel('KEY8');
      elseif a==9;subplot(4,3,9);plot(tone9); sound(tone9);xlabel('KEY9');
      elseif a==10;subplot(4,3,10);plot(tone10);sound(tone10);xlabel('KEY*');
      elseif a==11;subplot(4,3,12);plot(tone11);sound(tone11);xlabel('KEY#');
      end
      pause(0.5);
      b=x(1,2);
      if b==0;subplot(4,3,11);plot(tone0); sound(tone0);xlabel('KEY0');
      elseif b==1;subplot(4,3,1); plot(tone1); sound(tone1);xlabel('KEY1');
      elseif b==2; subplot(4,3,2);plot(tone2);sound(tone2);xlabel('KEY2');
      elseif b==3;subplot(4,3,3);plot(tone3); sound(tone3);xlabel('KEY3');
      elseif b==4;subplot(4,3,4);plot(tone4); sound(tone4);xlabel('KEY4');
      elseif b==5;subplot(4,3,5);plot(tone5); sound(tone5);xlabel('KEY5');
      elseif b==6;subplot(4,3,6);plot(tone6); sound(tone6);xlabel('KEY6');
      elseif b==7;subplot(4,3,7);plot(tone7); sound(tone7);xlabel('KEY7');
      elseif b==8;subplot(4,3,8);plot(tone8); sound(tone8);xlabel('KEY8');
      elseif b==9;subplot(4,3,9);plot(tone9); sound(tone9);xlabel('KEY9');
      elseif b==10;subplot(4,3,10);plot(tone10);sound(tone10);xlabel('KEY*');
      elseif b==11;subplot(4,3,12);plot(tone11);sound(tone11);xlabel('KEY#');
      end
      pause(0.5);
      c=x(1,3);
      if c==0;subplot(4,3,11);plot(tone0); sound(tone0);xlabel('KEY0');
      elseif c==1;subplot(4,3,1); plot(tone1); sound(tone1);xlabel('KEY1');
      elseif c==2; subplot(4,3,2);plot(tone2);sound(tone2);xlabel('KEY2');
      elseif c==3;subplot(4,3,3);plot(tone3); sound(tone3);xlabel('KEY3');
      elseif c==4;subplot(4,3,4);plot(tone4); sound(tone4);xlabel('KEY4');
      elseif c==5;subplot(4,3,5);plot(tone5); sound(tone5);xlabel('KEY5');
      elseif c==6;subplot(4,3,6);plot(tone6); sound(tone6);xlabel('KEY6');
      elseif c==7;subplot(4,3,7);plot(tone7); sound(tone7);xlabel('KEY7');
      elseif c==8;subplot(4,3,8);plot(tone8); sound(tone8);xlabel('KEY8');
      elseif c==9;subplot(4,3,9);plot(tone9); sound(tone9);xlabel('KEY9');
      elseif c==10;subplot(4,3,10);plot(tone10);sound(tone10);xlabel('KEY*');
      elseif c==11;subplot(4,3,12);plot(tone11);sound(tone11);xlabel('KEY#');
      end
  end
0 Comments
Accepted Answer
  Stephen23
      
      
 on 17 Sep 2015
        
      Edited: Stephen23
      
      
 on 17 Sep 2015
  
      Here is the entire functionality in about twenty lines:
Fs = 8000;
t = 0.25;
N = 1:ceil(t*Fs);
% define DTMF:
R = [697,770,852,941]; % Hz, rows
C = [1209,1336,1477];  % Hz, columns
[Ra,Ca] = meshgrid(R,C); % Hz, all
Rb = 2*pi*(Ra(:)/Fs);
Cb = 2*pi*(Ca(:)/Fs);
T = sin(Rb*N) + sin(Cb*N);
% get user input:
J = '123456789*0#'; % subplot is by row
I = input('Enter keys/s [0:9*#]: ','s');
assert(all(ismember(I,J)),'An invalid key was entered')
% plot and play:
for k = 1:numel(I)
    X = strfind(J,I(k));
    subplot(4,3,X);
    plot(T(X,:));
    xlabel(sprintf('KEY%s',I(k)))
    sound(T(X,:));
    pause(0.5);
end
3 Comments
  Stephen23
      
      
 on 17 Sep 2015
				
      Edited: Stephen23
      
      
 on 17 Sep 2015
  
			Easy, just replace the assert line with these three lines:
while ~all(ismember(I,J))
    I = input('An invalid character was used. Enter all keys/s [0:9*#]: ','s');
end
Note that the only way to exit this loop is to enter only correct characters. You might want to consider some "quit" option as well.
More Answers (1)
  Walter Roberson
      
      
 on 17 Sep 2015
        I recommend that you learn to use cell arrays. Or 2 dimensional arrays.
tone(1+0,:) = sin(2*pi*(941/Fs)*n) + sin(2*pi*(1336/Fs)*n);      %tone0=key zero(0)
tone(1+1,:) = sin(2*pi*(697/Fs)*n) + sin(2*pi*(1209/Fs)*n);      %tone1=key one(1)
tone(1+2,:) = sin(2*pi*(697/Fs)*n) + sin(2*pi*(1336/Fs)*n);      %tone2=key two(2)
tone(1+3,:) = sin(2*pi*(697/Fs)*n) + sin(2*pi*(1477/Fs)*n);      %tone3=key three(3)
and so on
then
sound(tone(1+c,:))
See Also
Categories
				Find more on Loops and Conditional Statements in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

