• Sábado 18 de Mayo de 2024, 20:52

Autor Tema:  PROGRAMACION MATLAB (concatenar)  (Leído 4226 veces)

Guillermo_19

  • Nuevo Miembro
  • *
  • Mensajes: 4
    • Ver Perfil
PROGRAMACION MATLAB (concatenar)
« en: Viernes 25 de Septiembre de 2009, 17:01 »
0
Hola,

Disculpen la molestia pero me gustaria saber si alguien me puede ayudar a resolver una pregunta de MATLAB. En verdad cualquier comentario que tengan sera bienvenido. Resulta que ya llevo algo de tiempo tratando de realizar lo siguiente pero no he llegado a ninguna conclusion.

Mi problema se encuentra descrito en el codigo que se muestra debajo. Como veran es un ejemplo sencillo pero que el resultado que espero requiere de cierta destreza y habilidad de programacion. Todo el calculo se realiza adecuadamente; sin embargo, el problema radica cuando quiero obtener el conjunto de valores obtenidos dentro del ultimo ciclo FOR (donde la variable es "w"). Si no es gran molestia pueden ejecutar este codigo y veran que dentro de este FOR se sobreescriben los valores obtenidos por el ciclo FOR "j".

En resumen, el resultado al que me gustaria llegar es tener el vector "c" con todos los valores obtenidos dentro de los ciclos. Para ser exacto, al correr este codigo en MATLAB me gustaria tener el siguiente vector "c". c=[7, 10, 13, 11, 16, 21].

Por ello, les solicito su cordial ayuda y cualquier comentario sera muy bienvenido.


x=[0 2 3];
u=[1 3 5];
v=[2 4 6];
   
    for j=1:1:length(x)

        if  j>1
           
            if  x(1,j)>1
                a=u(1,j);
                b=v(1,j);
               
                    k=1;
                for w=1:1:3
                    c(k)=w*a+b
                    k=k+1;
                end
       
            end

        end

    end

jjasso5

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: PROGRAMACION MATLAB (concatenar)
« Respuesta #1 en: Miércoles 30 de Septiembre de 2009, 00:32 »
0
Tienes que tener una manera de saber si ya pasaste por ese loop, y hacer la corrección al índice.
Por ejemplo, intenta:

clc; clear; format compact

x = [0 2 3];
u = [1 3 5];
v = [2 4 6];

toggle = 0;
for j = 1 : length(x)
    if j>1
        if x(1,j)>1
            a=u(1,j);
            b=v(1,j);
            k = 1;
            for w = 1 : 3
                if toggle == 0
                    c(k) = w*a + b
                else
                    c(k+3) = w*a + b
                end
                k = k+1;
            end
            toggle = 1;
        end
    end
end

Estoy marcando una variable 'toggle' que indica si ya pasaste por allí, y corrige en su caso a 'k'
Saludos