MATLAB: Recherche d’un élément possible le plus proche dans un tableau matriciel à 7 dimensions

Salut,
Le code est le suivant
 
time = period_fun(2,2,1,10,10,15,3) is a 7D matrix with has domensions 2*7*1*10*10*15*8
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
Donc, quand codez en dur le temps = 26.601 et passez-le.
J’essaie de trouver la valeur la plus proche possible dans period_arr
 
%finding the closest element possible to time = 26.601
dist = abs(period_fun - time);
min_dist = min(dist(:));
idx = find(dist == min_dist );
disp(period_arr(idx))
 
La sortie est 26.601, ce qui est faux.
Mon tableau a une valeur de 26.801 qui est plus proche de 26.601, il n’est pas en mesure de choisir cette valeur.
Comment puis-je le régler précisément? afin que je puisse le rendre plus robuste, même pour une variation de 0,001
Sil te plait aide moi

Meilleure réponse

  • Une matrice de dimensions [2 7 1 10 10 15 8], comportera 168000 éléments. Le fichier que vous avez partagé ne contient que 166379 éléments. Je ne peux pas créer la matrice avec une dimension spécifiée. Si je suggère une solution, il se peut que vous ne trouviez toujours pas qu’elle ne fonctionne pas. Cependant, j’ai donné une solution en remplissant le tableau avec des zéros pour rendre sa taille égale à 168000.
     
    fid = fopen('Mat file.txt');
    data = textscan(fid, '%f', 'HeaderLines', 6);
    period_arr = data{1};
    fclose(fid);
    period_arr = padarray(period_arr, 168000 - numel(period_arr), 0, 'post');
    period_arr = reshape(period_arr, [2 7 1 10 10 15 8]);
    time = 26.601;
    dist = abs(period_arr - time);
    [min_dist, idx] = min(dist(:));
    disp(period_arr(idx))
     
    Lorsque j’exécute ce code, il obtient la valeur
     

    26.602