matlab: квантование данных и построение гистограммы

#matlab #histogram

Вопрос:

У меня есть 3D-данные (X,Y,Z). Где X находится в диапазоне от 0 до 360, Y — от 0 до 180, а Z-от -100 до 100.

Я хотел бы квантовать данные до значений масштаба NxM по осям X и Y соответственно и получить некоторое среднее значение для Z.

Эти данные должны отображаться на 2D-графике, где значения Z должны быть представлены цветами (если значение близко к 100, то зеленым, если значение близко к -100, то красным). Как это можно было сделать?

Я видел, что есть histogram2 функция, но она не учитывает значения z.

Комментарии:

1. Пожалуйста, добавьте любые попытки, которые вы предприняли, так как это прольет дополнительный свет на детали этой задачи.

Ответ №1:

Не совсем уверен, собираетесь ли вы специально делать гистограмму, но вот один из способов построить набор z значений на плоскости xy. График создается путем просмотра 3D-графика поверхности с его видом сверху, чтобы создать впечатление, что он 2D. view() Функция принимает аргументы, которые используются для задания Angle , и Elevation из которых наблюдается график. Эту colormap() функцию можно использовать для настройки ваших цветов в зависимости от амплитуды/величины переменной z . Ниже я использовал случайные данные в качестве примера.

В разделе о квантовании данных кажется, что это можно сделать с помощью среднего фильтра для блоков/окон z данных. Это потребует более подробной информации и разъяснений. Любые выборочные данные будут высоко оценены.

График Интенсивности

 x = (0:360);  y = (0:180); z = (200*rand(length(y),length(x))) - 100;  [Time_Grid,Depth_Grid] = meshgrid(x,y);  surf(x,y,z); title("Intensity Plot"); Angle = 0; Elevation = 90; view(Angle,Elevation);  xlabel("x"); xlim([0,360]);  ylabel("y"); ylim([0,180]);  red = [1 0 0]; green = [0 1 0]; blue = [0 0 1];  Colour_Palette = [red; blue; blue; blue; green]; colormap(Colour_Palette); colorbar;