Matlab - unir vectores con el valor mas alto

 
Vista:
sin imagen de perfil
Val: 57
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

unir vectores con el valor mas alto

Publicado por jose david (28 intervenciones) el 01/07/2020 23:54:01
Estimada comunidad

La pregunta seguramente es sencilla me gustaria que me guien


tengo varias matrices de la forma

1
2
3
A=[ 1  2 ; 2 4 ; 3  5; 4 6; 5 10 ]
B=[ 4 8 ; 5  7 ; 6  8; 7 6; 8 11 ]
C=[ 7 8 ; 10  8]

necesito crear una matrix con los valores mas altos de y de las matrices anteriores

de la forma

1
D= [ 1  2 ; 2 4 ; 3  5; 4  8; 5 10 ;  6  8; 7 8; 8 11 ;10 8 ]

alguna idea...
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
Val: 6.975
Oro
Ha mantenido su posición en Matlab (en relación al último mes)
Gráfica de Matlab

unir vectores con el valor mas alto

Publicado por JOSE JEREMIAS CABALLERO (5917 intervenciones) el 02/07/2020 00:46:26
En lo posible evitemos usar el termino sencillo.
Decir que es sencillo o difícil es relativo, todo depende del conocimiento que uno tenga de matlab.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
clear
A=[ 1 2 ; 2 4 ; 3 5; 4 6; 5 10 ];
B=[ 4 8 ; 5 7 ; 6 8; 7 6; 8 11 ];
C=[ 7 8 ; 10 8];
%D= [ 1 2 ; 2 4 ; 3 5; 4 8; 5 10 ; 6 8; 7 8; 8 11 ;10 8 ];
E=[A;B;C];
F=sortrows(E) ;
G=unique(F(:,1));
for i=1:length(G)
    H=find(F(:,1)==G(i));
     I=F(H,2);
     maximo=max(I);
     D1(i,:)=[G(i), maximo];
end
D1

1
2
3
4
5
6
7
8
9
10
11
12
13
>> valore_mas_alto
 
D1 =
 
     1     2
     2     4
     3     5
     4     8
     5    10
     6     8
     7     8
     8    11
    10     8


Saludos
JOSE JEREMIAS CABALLERO
Asesor de Proyectos con Matlab
Servicios de programación matlab
Servicio de Asesoría Online en Matlab
[email protected]


http://matlabcaballero.blogspot.com
https://codigoscaballero.blogspot.com/
https://algoritmoscaballero.blogspot.com/
https://www.facebook.com/matlabcaballero
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
sin imagen de perfil
Val: 57
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

unir vectores con el valor mas alto

Publicado por jose david (28 intervenciones) el 02/07/2020 04:28:17
Estimado jose jeremias
Tienes razon con la relatividad de la palabra sencillo.

Sera algo que dejare de decir

Nuevamente gracias por el tiempo dedicado a responder las dudas de verdad lo aprecio.

Tengo una duda que se complementa

si las matrices no fueran A B C

sino A1 A2 A3 A4 .... Ai

el super indice i ya lo poseo de otra operacion de un for

de la forma
for i=1:k
A(i)
la idea es que se cree una matrix
B=(A(1);A(2);A(3;)...A(k))


Que cambios debe hacerse para integrarllos a una unica matriz de la forma

E=[A1;A2;A3;..Ai]
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
sin imagen de perfil
Val: 57
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

unir vectores con el valor mas alto

Publicado por jose david (28 intervenciones) el 02/07/2020 05:18:05
nuevamente mil gracias a funcionado perfecto.

ahora me encuentro integrado un conjunto de codigo. y no se si generar la pregunta en este foro o en otro....

pues todo va perfecto, y funciona.


solamente que necesito que sea general para un conjunto de archivos cargados.
La linea que me permite buscar archivos solo me deja cargar uno....

¿como puedo cargar mas de un archivo y correr el siguietne algoritmo ?

[archivo,ruta]=uigetfile('*.csv','Abrir un archivo de datos');
dat_archivo=strcat(ruta,archivo); %% esto solo me deja cargar un archivo y suelo necesitar cargar mas de un conjunto de archivos

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
k= length(archivo) %% Aqui necesito que lea la cantidad de archivos cargados
    switch k
    case 0
    return;
    case 1  %% un solo archivo  csv cargado
    Q= readtable(dat_archivo);
    Q=table2array(Q)
    Q=strrep(Q,",",".")
    Q2=Q
    Q=str2double(Q)
 
    n=isnan(Q)
    if (n == 1)
        Q=Q2
    else
    Q(isnan(Q))=0
    end
 
 
    otherwise  %% aqui seria la parte del problema cuando son mas de un archivo cargado
 
     for i=1:k %% debe permitir crear varias matrices con cada una de los archivos cargados
Q(i)= readtable(dat_archivo(i));
    Q(i)=table2array(Q(i))
    Q(i)=strrep(Q(i),",",".")
    Q2=Q(i)
    Q(i)=str2double(Q(i))
 
    n=isnan(Q(i))
    if (n == 1)
        Q(i)=Q2
    else
    Q(i)(isnan(Q(i)))=0
    end
     end
E=[];
 
a=whos('Q*');
 
for i=1:size(a,1)
 
E=[E; eval(a(i).name)];
 
end
 
F=sortrows(E) ;
 
G=unique(F(:,1));
 
for i=1:length(G)
 
    H=find(F(:,1)==G(i));
 
     I=F(H,2);
 
     maximo=max(I);
 
     D1(i,:)=[G(i), maximo];
 
end
 
Q=D1
    end
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
sin imagen de perfil
Val: 57
Ha disminuido su posición en 3 puestos en Matlab (en relación al último mes)
Gráfica de Matlab

unir vectores con el valor mas alto

Publicado por jose david (28 intervenciones) el 02/07/2020 06:31:45
Hago un cambio a el codigo, pues despues de trabajar un rato ya he mejorado el algoritmo y solo me queda un unico inconveniente y es lo que esta señalado en negrita.

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
[archivo,ruta]=uigetfile('*.csv*','MultiSelect',"on");
dat_archivo=strcat(ruta,archivo);
k= length(archivo) %% Aqui necesito que lea la cantidad de archivos importados o cargados  
    switch k
    case 0
    return;
    case 1  %% un solo archivo cargado
    dat_archivo=strcat(ruta,archivo);
    Q= readtable(dat_archivo);
    Q=table2array(Q)
    Q=strrep(Q,",",".")
    Q2=Q
    Q=str2double(Q)
 
    n=isnan(Q)
    if (n == 1)
        Q=Q2
    else
    Q(isnan(Q))=0
    end
    otherwise  %% mas de un archivo cargado
 
     for i=1:k %% debe permitir crear varias matrices con cada una de los archivos cargados
     dat_archivo=strcat(ruta,archivo(i));
     dat_archivo=char(dat_archivo)
Q= readtable(char(dat_archivo));
    Q=table2array(Q)
    Q=strrep(Q,",",".")
    Q2=Q
    Q=str2double(Q)
 
    n=isnan(Q)
    if (n == 1)
        Q=Q2
    else
 
    Q(isnan(Q))=0
    end
     v=genvarname(['Q',num2str(i)]);
     eval([v, '=Q']);
 
 clear Q
     end
E=[];
 
a=whos('Q*');
 
for i=1:size(a,1)
 
E=[E; eval(a(i).name)];
 
end
 
F=sortrows(E) ;
 
G=unique(F(:,1));
 
for i=1:length(G)
 
    H=find(F(:,1)==G(i));
 
     I=F(H,2);
 
     maximo=max(I);
 
     D1(i,:)=[G(i), maximo];
 
end
 
Q=D1
    end


el resto del codigo funciona muy bien
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