Matlab - Problema al llamar a una funcion

   
Vista:

Problema al llamar a una funcion

Publicado por ivan (24 intervenciones) el 07/11/2013 16:10:25
Hola.

Vereis tengo un problema al llamar una funcion. Le tengo que pasar como parametro una matrix n x m, pero me da el siguiente error, Undefined function or method 'recepcion' for input arguments of
type 'double'.

Sin embargo si la matriz es de 1 x m, se la traga como si nada.

Aqui adjunto el codigo del que obtengo los datos.

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
function [ruido senalnoise]=ruidogen(db,senaltx)
 
 
    ruido=zeros(1,length(senaltx));
for snr=0:0.1:db;
 
    %Señal que se multiplicara por las distintas amplitudes
    senal=randn(1,length(senaltx));
 
    A=sqrt(1/(10^(snr/10)));
 
    senal=senal.*A;
 
    %Aqui tendremos todos los canales y amplitudes calculadas
    ruido=vertcat(ruido,senal);
end
 
% Ahora la señal ensanchada la multiplicamos por todas las filas
% de la señal ruido, donde cada fila sera un canal.
 
% Recorreremos el vector ruido fila a fila, que es un canal para añadir el
% ruido
lenruido=size(ruido,1);
senalnoise=[];
 
for i=1:lenruido
 
    sig=senaltx+ruido(i,:); % SUMAMOS el ruido
 
    % Aqui estaran las señales a transmitir.
    senalnoise=vertcat(senalnoise,sig);
 
end
end

aqui esta la otra funcion donde me da error al llamarlo.
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
function [rx] =receptor(senalnoise)
 
 
% Los 31 chirp los multiplico por el cod.gold para la tx. Este resultado 
% los sumo todos ellos, equivales a un elemento de la señal, y lo mapeas.
 
% Cojo una señal con ruido y cogo los primeros 31 chirp que equivales a 
% 1 bit.
 
% Este vector ya contiene la señal desensanchada
 
vectorrx=senalnoise(:,(1:31:length(senalnoise)));
 
new((1:size(vectorrx,1)):(1:size(vectorrx,2)))=0;
 
% Lo multiplico por el codigo gold para terminal de desensancharlo
for i=1:size(vectorrx,1)
 
    signal=vectorrx(i,:);
 
    for j=1:size(signal,2)
 
        %Multiplico cada bit por el codigo gold y realizo una suma,
        % ese es el valor del nuevo elemento.
        suma=sum(signal(j)*codtx);
        new (i,j)=suma;
    end
 
end
 
% Mapeo de todo el vector con las distintas señales, ya sin cod gold
rx=[];
for i=1:size(new,1)
 
    for j=1:size(new,2)
 
        if new(i,j)>=0
            rx(i,j)=1;
        else rx(i,j)=-1;
        end
    end
 
end


Y la forma para llamarlo senalrx=recepcion(senalnoise);


Saludos y gracias
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

Problema al llamar a una funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 07/11/2013 16:12:28
Con que datos lo ejecutas?.
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

Problema al llamar a una funcion

Publicado por ivan (24 intervenciones) el 07/11/2013 19:46:37
No te preocupes, el problema esta en la llamada a la funcion receptor, que esta indicada como recepcion y ahi estaba el fallo, lo acabo de ver hace poco tiempo.

Saludos y gracias
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

Problema al llamar a una funcion

Publicado por JOSE JEREMIAS CABALLERO jjcc94@hotmail.com (3433 intervenciones) el 07/11/2013 19:59:30
Pero igual como lo ejecutas y cual es la solución?.
Recuerda que tu código puede servir a muchos usuarios de Matlab que trabajan en la misma área.
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

Problema al llamar a una funcion

Publicado por ivan (24 intervenciones) el 07/11/2013 20:26:14
Pues lo ejecuto desde otro codigo que es el principal.

Va llamando a distintas funciones entre las que esta un transmisor de bit (genera una secuencia de bit).
Un generador de codigos gold a partir de m-secuencias

El archivo denominado anteriormente como ruidogen, que te crea un canal de tx con ruido.

Un receptor para demodular la señal, que es archivo anterior llamado receptor

Y una funcion para calcuar la BER de la señal de llegada.

No se si responde esto a tu respuesta exactamnte, pero esque no tengo muy claro a que te referias.
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