У меня нет решения для следующего, описанного ниже. Я буду более чем счастлив, если кто-то может направить меня к методу / подходу для решения этой проблемы, если полное решение слишком много, чтобы спросить. Кроме того, если это заявление о проблеме не подходит для Matlab, предложите соответствующий форум для публикации этого вопроса.
Описание проблемы
У меня есть матрица M, индексы строк и столбцов которой соответствуют оси X и оси Y на графике. Значения в определенной строке i и столбце j соответствуют точке на рисунке графика. Пример матрицы результатов создается следующим образом:
x=1:0.1:50;
lineA=4*x+3;
lineB=x+1;
lineC=0.1*x-10;
lineD=-3*x+15;
range=[0:500];
rangeLength=length(range);
np = numel(lineA);
idCol = 1:np ;
result = zeros(rangeLength,np);
idRowA = 250+1-( round( lineA ) ) ;
linearInd = sub2ind( [rangeLength,np], idRowA, idCol ) ;
result(linearInd) = 10 ; %Importance of line A is 10
idRowB = 250+1-( round( lineB ) ) ;
linearInd = sub2ind( [rangeLength,np], idRowB, idCol ) ;
result(linearInd) = result(linearInd) + 1 ; % Importance of line B is 1
idRowC = 250+1-( round( lineC ) ) ;
linearInd = sub2ind( [rangeLength,np], idRowC, idCol ) ;
result(linearInd) = result(linearInd) + 1 ; %Importance of line C is 1
idRowD = 250+1-( round( lineD ) ) ;
linearInd = sub2ind( [rangeLength,np], idRowD, idCol ) ;
result(linearInd) = result(linearInd) +5 ; % importance of line D is 5
Мы можем построить этот матричный результат, используя приведенный ниже код, чтобы лучше визуализировать его данные:
[a,~]=size(result);
[Y, X] = find(result > 0);
plot(X, (a-Y+1), '.');
Мы можем наблюдать из кода и графика, что значения строк A, B, C и D хранятся внутри результата матрицы. Обратите внимание, что ширина линии одинакова для всех линий на графике, но важность Линии А на 10 порядков больше, чем важность Линии В. Линия А в два раза важнее Линии D.
Проблемный запрос
Теперь давайте предположим, что я получил матрицу result от другой функции. Я не знаю, какие функции линии были использованы для создания этой матрицы. Все, что я знаю, это то, что строки, которые используются для создания этой матрицы, имеют различное значение. Я хочу выяснить уравнение линии, которая, скорее всего, напоминает наиболее важную линию, которая использовалась для создания этой матрицы, затем вторую наиболее важную строку и т. Д.
Итак, в моем примере матрицы, созданной выше, решение должно дать мне следующую строку в качестве наиболее важной строки:
mostImpLine=[7 7.4 7.8 8.2 .........203]; %Note that this is same as lineA
secondMostImpLine=[12 11.7 11.4 ....]; %Note that this is same as lineB
Я понимаю, что в большом наборе данных будет невозможно получить точный результат в виде строки A, но самое близкое приближение к строке A сделает эту работу.