В Matlab у меня есть вектор Muen, размер которого я хочу уменьшить, разделив его на ячейки разной длины. В векторе есть несколько значений, которым нужны ячейки высокой точности, и множество значений, которые примерно равны и могут быть собраны в ячейки размером до нескольких сотен значений. Мне также нужно знать индекс для всех старых бинов, переходящих в новый бин, чтобы сократить вектор fluence сенкода.
Цель состоит в том, чтобы ускорить суммирование двух векторов sum(fluence.*Muen), используя интервалы разного размера, определенные Meun, и выполнить сумма флюенса в новые бины перед векторным умножением. Для этого я пытаюсь использовать
edges=[min(Muen):0.0001:Muen(13),Muen(12:-1:1));
[N,bin]=histc(*Muen*,edges)
Проблема заключается в том, как сделать вектор ребра, так как существует большая разница между максимальным и минимальным значением Muen и небольшая разница между другими значениями. Есть ли способ сделать шаги ребер зависимыми от производной Muen?
Чтобы получить более короткую версию Muen, нужно сделать что-то вроде
MuenShort=N.*edges;
но это не сработало, выйти правильно (может быть ошибка в краях), есть предложения?
Я также не очень понимаю, как bin дает индекс значений, которые входят в новые ячейки?
уточнение: я хочу сделать из вектора m или Muen взять элементы, которые примерно равны, и заменить их одним элементом и в то же время отслеживать индекс, для которого элемент переходит в новый вектор n или MuenShort. пример {m1}->n1,(1), {m2}->n2,(2), {m3,m4}-> m3=m4=n3,(3,4),{m5,m6,m7,m8 }-> m5=m6=m7=m8=n4,{5,6,7,8}... где n1>>n2, но разница между n3 и n4 может быть не такой большой. число m-элементов в каждом n-элементе должно определяться числом m-элементов, примерно равных друг другу, а точнее лежащих между двумя пределами. Таким образом, размер ячейки должен варьироваться от одного элемента до нескольких сотен элементов.
Затем я хочу использовать индексы, чтобы сделать вектор fluence короче.
FluenceShort (1: длина (MuenShort)) = [сумма (флюенс (1)), сумма (флюенс (2)), сумма (флюенс (3,4)), сумма (флюенс (5,6,7,8)) ...]; цель=сумма(fluenceShort.*MuenShort)
Есть ли способ реализовать это в Matlab?
Muen
отсортировано по убыванию? Поскольку вы, кажется, используете его в обратном порядке, чтобы создать свои края... - person Bas Swinckels   schedule 09.08.2013