#matlab #matrix #matlab-figure
#matlab #матрица #matlab-рисунок
Вопрос:
Как отобразить матрицу на диаграмме? Я могу сделать это на Python, используя:
import numpy as np
import matplotlib.pyplot as plt
def plot_filter(filters,tex):
fig, ax = plt.subplots()
for i in range(filters.shape[0]):
for j in range(filters.shape[1]):
c = hori[i][j]
ax.text(i 0.5, j 0.5, str(c), va='center', ha='center')
ax.set_xlim(min_val, filters.shape[0])
ax.set_ylim(min_val, filters.shape[1])
ax.set_xticks(np.arange(filters.shape[0]))
ax.set_yticks(np.arange(filters.shape[1]))
ax.set_xticklabels([])
ax.set_yticklabels([])
ax.grid()
plt.title(tex)
hori = np.array([[0, 0, 0], [1, 2, 1], [0, 0, 0]])
plot_filter(hori, 'Horizontal')
Как это сделать в MATLAB?
Результат должен выглядеть так:
Комментарии:
1. Поскольку matplotlib основан на графическом синтаксисе MATLAB, перевод кода Python в MATLAB должен быть относительно простым. Интересно, что вы получили совершенно другой ответ, чем я ожидал. Тем не менее, для будущих вопросов всегда лучше сначала попробовать самостоятельно, вы узнаете больше и, в общем, зададите вопросы, которые будут более полезны для более широкой аудитории.
2. Спасибо, но мне жаль, что я мало что знаю о MATLAB. Я пытался преобразовать это в код matlab, но, похоже, что subplot нельзя вызвать как matplotlib, поэтому я получил реальные subplot с другой осью. Результат выглядит совсем по-другому, и я ничего не могу найти об этой проблеме в Интернете, поэтому я предлагаю, чтобы мы сделали это по-другому в MATLAB.
Ответ №1:
Вы можете использовать cellplot
для этой цели.
h = cellplot({0 1 0; 0 2 0; 0 1 0});
title('Horizontal');
что дает:
и чтобы удалить красные флажки, используйте:
set(h(2:2:end),'EdgeColor', [1 1 1], 'FaceColor', [1 1 1]);
Комментарии:
1. Это хороший подход, я просто добавлю, что если ваши данные хранятся в матрице
A = [0 1 0; 0 2 0; 0 1 0];
, которую вы можете преобразовать в массив ячеек правильной формы с помощьюC = mat2cell(A,[1 1 1],[1 1 1]);
2. Я не знал об этой функции. Еще раз спасибо, что научили меня чему-то!