График плотности матрицы

У меня есть матрица 100x200, и я хотел бы показать эту матрицу в виде графика плотности. Вот пример 8x10.

X = [104 122 138 159 149 167 184 164 190 158; ...
     54  42  55  55  63  75  72  73  66  76; ...
     15  22  28  21  23  28  32  47  32  40; ...
     18  12  20  22  28  17  30  17  22  18; ...
     10  7   14  10  14  11  14  20  16  10; ...
     5   6   3   3   6   12  6   2   8   9; ...
     4   8   9   2   5   3   3   12  7   7; ...
     6   6   2   3   10  1   9   8   11  8]

Я пытался использовать такие функции, как bar3, surf, hist и т. д., но они не дают того результата, который мне нужен.

Я также хотел бы представить ось Y на новом успешном графике на логарифмической оси. Так похоже на наличие semilogy(x,y,'rx'), например.

Есть ли другие методы, которые я мог бы использовать?

введите здесь описание изображения


person user3536870    schedule 12.10.2015    source источник
comment
Вам нужна плоская поверхность (сглаженная), где верхняя часть темно-красная, а нижняя часть синяя (или что-то подобное), или трехмерный график с большими числами в виде пиков (сглаженный), трехмерный столбчатый график ( не сглажено) или что-то еще?   -  person Stewie Griffin    schedule 12.10.2015
comment
Таким образом, красный цвет будет отражать большее число в матрице. Синий цвет будет представлять низкое число. Итак, мне нужен сюжет, в котором цвета варьируются от сине-красного в зависимости от числа в матрице.   -  person user3536870    schedule 12.10.2015
comment
Я не совсем уверен, каким должен быть результат. Вам нужно что-то вроде imagesc(X)? Или, может быть, вы могли бы загрузить небольшой эскиз?   -  person hbaderts    schedule 12.10.2015
comment
попробую набросать!   -  person user3536870    schedule 12.10.2015
comment
Вы хотите, чтобы он был гладким или как полоски?   -  person Stewie Griffin    schedule 12.10.2015
comment
Логарифмическая шкала по оси y может быть достигнута с помощью set(gca,'YScale','log'), но вы, скорее всего, захотите, чтобы ось z была логарифмической шкалой.   -  person Wauzl    schedule 12.10.2015


Ответы (2)


Как насчет "серфить" это как спектрограмму?

XX = log([104 122 138 159 149 167 184 164 190 158; 
          54  42  55  55  63  75  72  73  66  76; 
          15  22  28  21  23  28  32  47  32  40; 
          18  12  20  22  28  17  30  17  22  18; 
          10  7   14  10  14  11  14  20  16  10; 
           5   6   3   3   6   12  6   2   8   9; 
           4   8   9   2   5   3   3   12  7   7; 
           6   6   2   3   10  1   9   8   11  8]

figure
surf(XX, 'edgecolor', 'none'); view(0,90); axis tight;
xlabel ('x')
ylabel ('y')

введите здесь описание изображения

ПРИМЕЧАНИЕ. Первая строка представляет первую строку (104,122,138...), а строка 8 представляет строку 8 (6,7,2....) Темно-красный = высокое значение светло-синий = низкое значение

person GameOfThrows    schedule 12.10.2015
comment
Что вы подразумеваете под логарифмом по оси Y? Вы имеете в виду журнал оси Z? Я уже сделал log(X), оси x и y теперь представляют индекс вашей матрицы X, а цвета (ось z) представляют журнал ваших значений в X - person GameOfThrows; 12.10.2015
comment
Да я довольно тупо просмотрел матрицу на ваш ответ. Блестяще, мерси - person user3536870; 12.10.2015

Matlab также предоставляет функцию тепловой карты.

>> X = [104 122 138 159 149 167 184 164 190 158; ...
     54  42  55  55  63  75  72  73  66  76; ...
     15  22  28  21  23  28  32  47  32  40; ...
     18  12  20  22  28  17  30  17  22  18; ...
     10  7   14  10  14  11  14  20  16  10; ...
     5   6   3   3   6   12  6   2   8   9; ...
     4   8   9   2   5   3   3   12  7   7; ...
     6   6   2   3   10  1   9   8   11  8];
>> heatmap(X)

ans = 

  HeatmapChart with properties:

    ColorData: [8×10 double]

  Show all properties

Появится следующий график: Тепловая карта матрицы X

person Herman Wilén    schedule 01.11.2017