Używam Matlab 2012a.Znajdź n wartości minimalnych w tablicy
Mam tablicę k komórek (powiedzmy 1000). Muszę znaleźć 5 najniższych wartości tej tablicy i trzeba zrobić średnią tych wartości w X i Y.
Ktoś ma pomysł, jak to zrobić?
Używam Matlab 2012a.Znajdź n wartości minimalnych w tablicy
Mam tablicę k komórek (powiedzmy 1000). Muszę znaleźć 5 najniższych wartości tej tablicy i trzeba zrobić średnią tych wartości w X i Y.
Ktoś ma pomysł, jak to zrobić?
zakładając, że masz tablice X i Y, a chcesz znaleźć pięć najniższych wartości Y:
[m mi] = sort(Y);
lowest5index = mi(1:5);
lowest5Y = Y(lowest5index);
lowest5X = X(lowest5index);
meanYlowest5 = mean(lowest5Y);
meanXlowest5 = mean(lowest5X);
Objaśnienie:
Komenda sort
z dwóch parametrów wyjściowych zwraca zarówno posortowaną tablicę (w m
) i indeksy w oryginalnej tablicy (mi
). Pierwsze pięć indeksów mi(1:5)
odpowiada pięciu najniższym wartościom. Wybranie mean
tych wartości dla X i Y zrobi to, co chcemy. Jeśli nie rozumiem twojego problemu, wyjaśnij swoje pytanie, a ja zrobię to innym razem.
ahh, pobij mnie do tego ^^ – Groot
Tak, przepraszam, nie byłem wystarczająco jasny. Muszę znaleźć 5 najniższych wartości w Y, a następnie zrobić średnią zarówno z X jak i Y z tych 5 punktów! Twoja technika była jednak całkiem interesująca! Będę pamiętać o tej sztuczce, jeśli się przyda. – Vissenbot
Moja technika robi dokładnie to, o co prosisz ... Zmodyfikowałem kod, aby było jeszcze wyraźniejsze. Jeśli nadal nie działa dla ciebie, musisz wyjaśnić swoją strukturę danych jaśniej. – Floris
Co powiesz na wykonanie sort
swojej tablicy od najniższej wartości do najwyższej, a następnie wybranie 5 pierwszych wartości. Będą to 5-minutowe wartości twojej tablicy. Następnie wykonaj średnią z tych 5 wartości.
To może nie być najwydajniejszy sposób na zrobienie tego, ale za jedyne 1000 wartości wykona zadanie!
Mam nadzieję, że pomoże!
użycie minmaxselection
pakiet MATLAB MEX, który został specjalnie zoptymalizowany dla tego problemu:
a = [2,3,4,7,56,4,21, 64, -2];
mink(a, 2)
<< ans =
<< -2 2
mink(a,4)
<< ans =
<< -2 2 3 4
Czy twoje pytanie o algorytm to zrobić? Z jakiego języka programowania korzystasz? – Alex
Edytowałem, mój zły. Używam Matlab 2012a – Vissenbot
Jaka jest struktura twoich danych? Wspominasz "tablica" i "komórki" oraz "X" i "Y". Utworzyłem odpowiedź zakładając, że macie tablice X i Y - ale ponownie czytając twoje pytanie Nie jestem pewien, co masz ... Czy możesz wyjaśnić? – Floris