2015-05-19 4 views
0

Я хочу использовать Matlab для достижения следующей цели: У меня есть функция, которая принимает два входа и дает реальное число.Matlab: Как окрасить регион

function T = SS(x,y) 
%%% some calculation %%% 
T = returnval 

Хочу точку (х, у) в плоскости ху, чтобы быть окрашены в синий цвет, если возвращаемое значение равно 1, зеленый, если возвращаемое значение равно 0,5 и т.д.

Я не Не знаю, как подойти к этому. (расчет сложный, поэтому неясно, какова связь между x и y по z.Таким образом, невозможно написать уравнение для деления области затем цвет соответственно.)

Спасибо за помощь. :

ответ

0

Если вы хотите сгруппировать по вашему запросу T в вектор, вы можете использовать scatter, чтобы сделать выбор. Затем просто настройте свою собственную цветочную карту. Вот пример:

%// Sample data 
[x,y]=meshgrid(0:.1:2); 
x=x(:);y=y(:); 
T=rand(size(x)); 

%// Define the colormap 
MAP=[1 0 0; %// red 
    0 1 0; %// green 
    0 0 1]; %// blue 
colormap(MAP) %// apply the colormap 
scatter(x,y,[],T) %// make the plot 

MAP представляет собой матрицу, а каждая строка определяет цвет. В этом случае три строки, поэтому элементы со значениями от 0 до 1/3 будут красными, элементы со значениями между 1/3 и 2/3 будут зелеными, а элементы между 2/3 и 1 будут синими. В общем, диапазон значений T (то есть max(T)-min(T)) равномерно разделен на каждый цвет, определенный MAP.

+0

спасибо. Сейчас я могу получить матрицу 100 * 100 с элементами значения 1/2/3/4/5/6. и я хочу, чтобы все 1 были одного цвета, а все 2 - одного цвета. Является ли ваш подход все еще применимым или существует более простой способ решения проблемы? (так как теперь он менее сложный.) Спасибо. – Hong

+0

В этом случае make 'MAP' с одной строкой для каждого значения. Поэтому, если ваши значения равны 1, 2, 3, 4, 5, 6, тогда сделайте 'MAP' с 6 строками и 3 столбцами. Каждая строка имеет 3 записи, по одному для красного, зеленого и синего цветов соответственно. Поэтому '[1 1 1]' белый, '[0 0 0]' черный, '[1 0 0]' красный и т. Д. – David

+0

Спасибо. Вернемся к вашему первому решению. Что делать, если значения T не могут быть определены заранее. В основном, что делает функция, это то, что она принимает (x, y) и вычисляет 6 значений (в определенном порядке) и возвращает минимум. Я хотел бы, чтобы, если возвращаемый минимум является вторым рассчитанным значением, тогда (x, y) должен быть красным. Если возвращаемый минимум - это четвертое значение, то (x, y) должно быть другого цвета. (Извините, если описание сложное, спасибо за вашу помощь) – Hong

Смежные вопросы