#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;