Matlab - muestreo de señales (generandolas)

   
Vista:

muestreo de señales (generandolas)

Publicado por Eder (2 intervenciones) el 10/09/2014 23:41:25
ayuda con el caso 1 2 y 3 del ultimo switch en donde aparezca la señal muestreada ideal, natural y techo plano
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
n=0;
y=0;
Xp=0; Xr=0; yr=0;
ini=input('inicio=   ');
fin=input('fin=   ');
incre=input('incremento=   ');
t=ini:incre:fin;
S=input('#de frec. de muestreo=   ');
disp(' dame el numero de componentes en nuestro muestreo\n');
     num=input('#de componentes=   ');
     A1=1:num;
     fa1=1:num;
     yr1=1:num;
     for n=1:num
        A1(n)=input('amplitud (A) para componente=   ');
        f1(n)=input(' frecuencia(f) para componente=   '); %guardar todas las frecuencias
      A=f1(n);
        if f1(n)<-0.5*S || f1(n)>0.5*S
           Num=1;
           fa1(n)=f1(n)-Num*S;
           while fa1(n)<-0.5*S || fa1(n)>0.5*S
           Num=Num+1;
           fa1(n)=f1(n)- Num*S;   %guardar todas la fa
           disp('1-fenomeno alias\n')  % tambien decir hay fenomeno alias
      B= genvarname({'SI'});
       C=fa1(n);
           end
       else
           fa1(n)= f1(n);
           disp('0-sin fenomeno alias\n') %o no hay fenomeno alias
        B= genvarname({'NO'});
        C=fa1(n);
       end
         disp('determina si es una funcion seno (0) o coseno(1)\n');
        op = input ('cual es tu opcion: ');
            switch op
                case 0
                    y= sin((2*pi*f1(n))*t);
            D=sprintf('%dSen(%d*pi*t)',A1(n),2*fa1(n));
                    yr= sin(2*pi*fa1(n)*t);
                case 1
                    y= cos((2*pi*f1(n))*t);
                    yr= cos((2*pi*fa1(n))*t);
                    D=sprintf('%dCos(%d*pi*t)',A1(n),2*fa1(n));
            end
       Xp=Xp+ A1(n)*y;
       Xr=Xr+ A1(n)*yr;
       Tabla = genvarname({'fo', 'Fenomeno del Alias', 'fa', 'Equiv Analogico'})
       disp([A,'  ', B, ' ', C, D]);
     end
  subplot(2,1,1)
    plot( t,Xp)
    title('señal original' );
xlabel('t');
ylabel('f(x)');
grid on;
subplot(2,1,2)
  plot( t,Xr)
  title('señal recuperada' );
xlabel('t');
ylabel('f(x)');
grid on;
k=1;
tip=0;
disp('determina si que grafica deseas ilustar\n');
disp('1-ideal\n');
disp('2-natural\n');
disp('3-techo plano\n');
ts=1/S;       grafica = input ('cual es tu opcion: ');
switch grafica
    case 1
 
        for t=0:0.1*ts:S;
    if mod(t,ts)==0
        tren(k)=1;
    else
        tren(k)=0;
    end
       k=k+1
        end
    t=0:0.1*ts:S;
    j=0;
   for n=1:1:n;
    if tip(n)==1
        j=j+A1(n)*sin(2*pi*t*f1(n));
    else
        j=j+A1(n)*cos(2*pi*t*f1(n));
    end
   end
   z=tren.*j;
   t=0:0.1*ts:S;
    figure(3)
    plot (t,z)
  hold on
    grid on
 
    case 2
        t=-1:1/500:1;
u1=[zeros(1,250),ones(1,751)];
u2=[zeros(1,751),ones(1,250)];
un=u1-u2;
title('Función cuadrada')
figure(3)
subplot(2,1,1)
plot(t,un)
 
r=un.*D;
subplot(2,1,2)
plot(t,Xr)
    case 3
       u=0;
u2=0;
     for t=0:0.1*ts:S;
for n=1:1:n;
    if tip(n)==0
        u=u+A1(n)*sin(2*pi*t*f1(n));
    else
        u=u+A1(n)*cos(2*pi*t*f1(n));
    end
end
for n=1:1:n;
     if tip(n)==1
          u2=u2+A1(n)*sin(2*pi*(t+0.1*ts)*f1(n));
    else
        u2=u2+A1(n)*cos(2*pi*(t+0.1*ts)*f1(n));
     end
end
x=[t (t+0.1*ts)];
y=[u  u ];
plot(x,y)
hold on
grid on
x1=[(t+0.1*ts) (t+0.1*ts)];
y1=[u u2];
plot(x1,y1)
     end
end
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de JOSE JEREMIAS CABALLERO

muestreo de señales (generandolas)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 11/09/2014 16:28:03
Con que valores ejecutas u código?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO

muestreo de señales (generandolas)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 11/09/2014 17:31:02
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
clear all
n=0;
y=0;
Xp=0; Xr=0; yr=0;
%  ini=input('inicio= ');
%  fin=input('fin= ');
%  incre=input('incremento= ');
ini=10;
fin=13;
incre=1;
t=ini:incre:fin;
 
 %S=input('#de frec. de muestreo= ');
 S=16;
 %disp(' dame el numero de componentes en nuestro muestreo\n');
% num=input('#de componentes= ');
 num=4;
 A1=round(20*rand(1,num));
 f1=round(20*rand(1,num));
 fa1=1:num;
 yr1=1:num;
 for n=1:num
     %A1(n)=input('amplitud (A) para componente= ');
     %f1(n)=input(' frecuencia(f) para componente= '); %guardar todas las frecuencias
     A=f1(n);
        if f1(n)<-0.5*S || f1(n)>0.5*S
             Num=1;
             fa1(n)=f1(n)-Num*S;
             while fa1(n)<-0.5*S || fa1(n)>0.5*S
                 Num=Num+1;
                 fa1(n)=f1(n)- Num*S; %guardar todas la fa
                 disp('1-fenomeno alias\n') % tambien decir hay fenomeno alias
                 B= genvarname({'SI'});
                 C=fa1(n);
             end
        else
             fa1(n)= f1(n);
             disp('0-sin fenomeno alias\n') %o no hay fenomeno alias
             B= genvarname({'NO'});
             C=fa1(n);
      end
     disp('determina si es una funcion seno [0] o coseno [1]\n');
     op=input('cual es tu opcion: ');
     switch op
         case 0
             y= sin((2*pi*f1(n))*t);
             D=sprintf('%dSen(%d*pi*t)',A1(n),2*fa1(n));
             %este no es vector double sino una cadena 
 
             yr= sin(2*pi*fa1(n)*t);
         case 1
             y= cos((2*pi*f1(n))*t);
             yr= cos((2*pi*fa1(n))*t);
             D=sprintf('%dCos(%d*pi*t)',A1(n),2*fa1(n));
             %este parte no es vector double sino una cadena
 
    end
    Xp=Xp+ A1(n)*y;
    Xr=Xr+ A1(n)*yr;
    Tabla=genvarname({'fo', 'Fenomeno del Alias', 'fa', 'Equiv Analogico'});
    disp([A,' ', B, ' ', C, D]);
 end
 subplot(2,1,1)
 plot( t,Xp)
 title('señal original' );
 xlabel('t');
 ylabel('f(x)');
 grid on;
 subplot(2,1,2)
 plot( t,Xr)
 title('señal recuperada' );
 xlabel('t');
 ylabel('f(x)');
 grid on;
 k=1;
 tip=0;
 disp('determina si que grafica deseas ilustar\n');
 disp('1-ideal\n');
 disp('2-natural\n');
 disp('3-techo plano\n');
 ts=1/S;
 grafica=input('cual es tu opcion: ');
 switch grafica
     case 1
         for tt=0:0.1*ts:S;
             if mod(tt,ts)==0
                tren(k)=1;
             else
                tren(k)=0;
             end
            k=k+1;
         end
         t=0:0.1*ts:S;
         j=0;
         for n=1:1:n;   % este no se puede hacer
             if tip(n)==1
                j=j+A1(n)*sin(2*pi*t*f1(n));
             else
                j=j+A1(n)*cos(2*pi*t*f1(n));
             end
         end
         z=tren.*j;
         t=0:0.1*ts:S;
         figure(3)
         plot(t,z)
         hold on
         grid on
 
     case 2
         t=-1:1/500:1;
         u1=[zeros(1,250),ones(1,751)];  %cual es la relacion u1 y D
         u2=[zeros(1,751),ones(1,250)];  %cual es la relacion u2 y D
         un=u1-u2;
         title('Función cuadrada')
         figure(3)
         subplot(2,1,1)
         plot(t,un)
         r=un.*D;   % las dimension de un  y D son distintas
         subplot(2,1,2)
         plot(t,Xr)
     case 3
         u=0;
         u2=0;
         for t=0:0.1*ts:S;
              for n=1:1:n; % este no  puedes hacer
                  if tip(n)==0
                        u=u+A1(n)*sin(2*pi*t*f1(n));
                  else
                        u=u+A1(n)*cos(2*pi*t*f1(n));
                  end
             end
             for n=1:1:n;   %esto no puede hacer
                 if tip(n)==1
                    u2=u2+A1(n)*sin(2*pi*(t+0.1*ts)*f1(n));
                 else
                    u2=u2+A1(n)*cos(2*pi*(t+0.1*ts)*f1(n));
                 end
             end
             x=[t (t+0.1*ts)];
             y=[u u ];
             plot(x,y)
             hold on
             grid on
             x1=[(t+0.1*ts) (t+0.1*ts)];
             y1=[u u2];
             plot(x1,y1)
         end
 end



Derrepente haya mas errores, pero eso vi a grandes rasgos

Captura_de_pantalla_2014-09-11_10.29.11



Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
Estimado Usuario de Matlab, el correo es para servicios de cursos, asesoría y programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com


http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

muestreo de señales (generandolas)

Publicado por Eder (2 intervenciones) el 12/09/2014 05:21:52
desde -0.5 hasta 0.5 con incremento en 0.01 y tanto las amplitudes como las frecuencias son aleatorias me agrdaria ver si no se podrian juntar tanto la cadena para poder mostrar una tabla con esos valores de A,B,C,D con los vectores
se puede hacer?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de JOSE JEREMIAS CABALLERO

muestreo de señales (generandolas)

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3432 intervenciones) el 12/09/2014 16:07:33
He visto que hay muchos errores en el código por ejemplo:
1
2
3
4
5
6
7
8
9
n=1:1:n
p=0;
p(m)
el ámbito de la variable k,
la dimensiones de 'un'  y D son distintas,
D es un tipo char pero 'un' es un tipo doublé
....
...
...


Saludos.
JOSE JEREMÍAS CABALLERO
Asesoría online y Presencial en Matlab
programador en matlab
Servicios de programación matlab
jjcc94@hotmail.com
Estimado Usuario de Matlab, el correo es para servicios de cursos, asesoría y programación, toda ayuda gratuita es vía foro.


http://matlabcaballero.blogspot.com

http://www.lawebdelprogramador.com/foros/Matlab/1371532-FORMA_DE_APRENDER_MATLAB.html
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar