Matlab - Imprimir elementos repetidos de vectores diferentrs

 
Vista:
sin imagen de perfil

Imprimir elementos repetidos de vectores diferentrs

Publicado por Rocio (1 intervención) el 27/04/2023 20:30:05
Dado un vector R y uno T de 7 elementos cada uno, buscar en T los elementos de R e imprimir los valores que se repitan; si estuviera más de una vez no imprimirlo todas las veces, sino que imprimirlo una vez y al lado la cantidad de veces.
Ejemplo:
R=[2;5;7;3;8;4;6]
T=[5;3;5;1;0;2;1]
salida: 5 (2 veces)
2
ayudaaa, por favor 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 Richtofen

Imprimir elementos repetidos de vectores diferentrs

Publicado por Richtofen (20 intervenciones) el 30/04/2023 10:34:41
Este código hace lo que necesitas, seguramente se pueda optimizar ya que en matlab no es buena idea usar bucles, e intentar apurar la vectorizacion todo lo posible, pero para darte una idea y tener un código funcional te puede servir:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
%  Buscar en T los elementos de R
R = [2;5;7;3;8;4;6];
T = [5;3;5;1;0;2;1];
% Usamos la funcion ismemeber, cuyas salida es:
% loc1 guarda true si el numero del indice actual de R se encuentra en
% alguna posición de T. (Hay más salidas e implementaciones de la funcion,
% chequea la documentación)
loc = ismember(R,T);
% Para cada valor que está a true, contamos la longitud y escribimos
for i = 1:length(loc)
    % Si el indice es true, siginifica que el elemento de la posición i de
    % R se encuentra en T, con lo cual solo queda ver cuantas veces se
    % repite
    if loc(i)
        % Sacamos la longitud viendo cuantos indices están a true tras usar
        % la función find dentro de T para el valor de R actual
        rep_lenght = length(find(T == R(i)));
        if rep_lenght > 1
            fprintf('%i (%i veces)\n', R(i), rep_lenght);
        else
            fprintf('%i \n', R(i));
        end
    end
end

Espero que te ayude y dale una vuelta a la documentacion de la funcion ismember e intenta mejorar el 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