#matlab #image-processing #signal-processing #interpolation #matrix-multiplication
#matlab #обработка изображений #обработка сигналов #интерполяция #матрица-умножение
Вопрос:
У меня есть эти данные со значениями по краям матрицы и другими значениями с равномерно распределенным интервалом внутри матрицы. Я хочу предсказать значения нулевых позиций по исходным значениям и составить тепловую карту новых данных. В suggest я использую scatteredInterpolant, ndgrid и interpolant, поскольку данные таковы, что interp2 (функции matlab) не могут использоваться для интерполяции нулевых элементов. Теперь этот метод не дает мне плавной фигуры, и я хочу знать, может ли кто-нибудь предложить некоторую помощь. Я прикрепил рисунок из моего кода, данные и код к этому сообщению.Спасибо.
[knownrows, knowncolumns, knownvalues] = find(DataGrid); %get location and value of all non-zero points
interpolant = scatteredInterpolant(knownrows, knowncolumns, knownvalues,'linear'); %create interpolant from known values
[queryrows, querycolumns] = ndgrid(1:1:size(DataGrid, 1), 1:1:size(DataGrid, 2)); %create grid of query points
interpolatedj = interpolant(queryrows, querycolumns);
Тепловая карта (interpolatedj)
Ответ №1:
Для построения сглаженной матрицы вы можете использовать pcolor
и установить параметр shading равным interp
pcolor(M); %where M is your 2D matrix
shading interp %set the shading to interp
Комментарии:
1. Я все еще делаю сетку ребер на графике.
Ответ №2:
Попробуйте image(M)
или imagesc(M)
, где M — матрица. pcolor(M)
также работает. Если ваша матрица огромная, вам нужно удалить края, иначе рисунок будет выглядеть как пустое изображение.
Комментарии:
1. Я попробовал их и все еще вижу сетку по краям на графике.
2. насколько велика ваша матрица? если возможно, опубликуйте свой рисунок. используйте
set('EdgeColor','none')
.3. Проблема заключается в функции plot, но в интерполяции моих данных. Кто-нибудь может предложить хороший способ решения этой проблемы?