У меня есть матрица со значениями серого между 0
и 1
. Для каждой записи в матрице существуют определенные полярные координаты, которые указывают положение значений серого. У меня уже есть значения Theta
и Rho
(полярные), оба в отдельных матрицах 512×960. И значения оттенков серого (в матрице с именем C
) для каждой комбинации Theta
и Rho
. У меня то же самое для X
и Y
, так как я просто использую pol2cart
для трансформации. Проблема в том, что я не могу напрямую построить эти значения, поскольку они еще не помещаются в «ячейки» новой матрицы.
Что я хочу: поместить значения серого в квадратную матрицу размером 1024×1024. Я не могу сделать это напрямую, потому что полярные координаты попадают между сеткой этой матрицы. Поэтому мы сейчас используем интерполяцию, но это чрезвычайно трудоемко и должно выполняться отдельно для каждого набора данных, хотя преобразование от исходных матриц к этой конечной всегда будет одинаковым. Поэтому я хотел бы решить эту матрицу один раз (аналитически или численно) и использовать умножение матриц или что-то подобное, чтобы эффективно применять манипуляции в каждом цикле кода.
Один из примеров того, как может выглядеть одно из этих преобразований:
Нули в первой матрице — это сетка, а значение 1
(между сеткой) — это значение серого, которое попадает между четырьмя точками сетки, затем я хотел бы преобразовать ее во вторую матрицу (не обращайте внимания на визуальное расстояние между точками).
Для каждого набора данных у меня есть сотни таких матриц, поэтому я хотел бы сделать код более эффективным.
Предыстория: сейчас я использую TriScatteredInterp
для интерполяции. Мы также пробовали scatteredInterpolant
, но он медленнее. Я также разместил связанный вопрос, но решил разделить два возможных решения, потому что решение, которое я прошу здесь, также применимо к коду, отличному от MATLAB, и, вероятно, будет быстрее и обеспечит более плавное (без непрерывного появления фигур) выполнение кода.
interp2
(при условии, что вы используете это?), Есть ли какие-то шаги, которые вы можете пропустить, а затем сделать свою собственную реализацию, которая использует это? Однако я не уверен, что это возможно. - person Bernhard   schedule 12.05.2016interp2
, потому что исходный код для этого, похоже, открыт. Если я попытаюсь открыть код разбросанного Interpolant, я просто получу файл справки. Однако interp2 еще не работает для моих входных данных, поэтому я пытаюсь исправить код так, чтобы он работал. Я доложу, когда это будет закончено (к сожалению, я не могу тратить на это слишком много времени, так как это побочное направление моей работы). В то же время, если у кого-то есть другие предложения, я с нетерпением жду их. - person BramMooij   schedule 18.05.2016X
иY
, потому что вы говорите, что это полярные координаты? Какой угол, а какой радиус? ИлиX
иY
уже преобразованы в декартовы координаты? - person Rody Oldenhuis   schedule 21.11.2016X
и `Y? ... вы, возможно, лучше всего опубликуете несколько простых входных данных 5 × 5, с которыми мы можем поиграть. - person Rody Oldenhuis   schedule 21.11.2016imresize
больше похоже на то, что вы хотите - person Rody Oldenhuis   schedule 21.11.2016imresize
со значениями, которые не составляют изображение? (У меня есть значения x, значения y и значения интенсивности отдельно, они регулярно расположены в тета и регулярно расположены в ро) - person BramMooij   schedule 22.11.2016