Matlab: цветовая шкала диаграммы созвездий

Я использую Matlab. У меня большой вектор-столбец, состоящий из комплексных значений. например

Данные = [
-0,4447 + 0,6263i
0,3114 + 0,8654i
0,7201 + 0,6808i
0,7566 + 0,8177i
-0,7532 - 0,8085i
-0,7851 + 0,6042i
-0,7351 - 0,8725i
-0,4580 + 0,8053i
0,5775 - 0,6369i
0,7073 - 0,5565i
0,4939 - 0,7015i
-0,4981 + 0,8112i
....
]

Это представляет диаграмму созвездия, которая показана ниже.

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

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

2 ответа

Решение

Я думаю, что вы хотите сделать тепловую карту:

histdata = [real(data), imag(data)];
nbins_x = nbins_y = 10; 
[N, C] = hist3(histdata, [nbins_x, nbins_y]); % the second argument is optional.
imagesc(N);

Вот hist3 создает гистограмму-матрицу, imagesc рисует масштабированную тепловую карту. Если вы предпочитаете 3d-визуализацию, просто наберите hist3(histdata),

Если вы просто щелкните правой кнопкой мыши на N в окне рабочей области, появится множество других вариантов визуализации. Я предлагаю также попробовать contourf(N) который является заполненным контурным сюжетом.

Итак, что вы хотите сделать, это найти гистограмму два-2. Самый простой способ - разделить действительные и мнимые точки и использовать функцию hist2d, например:

rdata=real(data);
idata=imag(data);

hist2d([rdata;idata]);
Другие вопросы по тегам