Привет,

У меня возникли проблемы с использованием функции контура на графике в логарифмическом масштабе. У меня есть 9 точек данных на 2D-диаграмме рассеяния, которые окрашены для третьей переменной. Код, который я использую для построения данных, а также график, приведены ниже.

a = reshape(mtot_1,1,[]); % convert matrix to row vector
b = reshape(MFR_1,1,[]); % convert matrix to row vector
c = reshape(SN_maxes_1,1,[]); % convert matrix to row vector
figure(4)
clf
hold on
scatter(b, a, [], c, 'filled') 
set(gca,'xscale','log')
set(gca,'yscale','log')
colorbar
xlabel('MFR')
ylabel('total mass flow')

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

figure(5)
clf
hold on
contourf(MFR_1, mtot_1, SN_maxes_1, 100, 'LineStyle', 'none') 
scatter(b, a, [], c, 'filled') 
set(gca,'xscale','log')
set(gca,'yscale','log')
d = colorbar;
d.Label.String = "Swirl No.";
xlabel('MFR')
ylabel('total mass flow')

Я хотел бы сделать так, чтобы контурный график имел «прямые» края между внешними точками данных при построении в логарифмическом масштабе, чтобы контурная карта по существу отображалась как четырехугольник с прямыми сторонами на логарифмическом графике вместо странная изогнутая форма на контурном графике выше. Может кто-нибудь предложить мне несколько советов о том, как этого добиться? Заранее спасибо!

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю справку по домашним заданиям MatLab, справку по назначению MatLab, помощь по финансам для студентов, инженеров и исследователей в нескольких отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для B.E, B .Tech, ME, M.Tech, Ph.D. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

привет

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

MFR_1 = [0.93016, 0.13933, 0.04154; 4.75072, 0.96454, 0.27638; 16.1767, 3.35929, 1.03684];
%Then the y-axis data (also a matrix): 
mtot_1 = [0.00087393, 0.001293, 0.00161739; 0.00146412, 0.00182395, 0.00211802; 0.00195069, 0.00228598, 0.002528465];
%Then the "z" data (if you would call it that). This is what determines the color of the dots.  It is also a matrix:
SN_maxes_1 = [1.678801, 1.627564, 1.521288; 1.535838, 1.848008, 1.7666569; 1.419559, 1.818278, 1.963394];
a = reshape(mtot_1,1,[]); % convert matrix to row vector
b = reshape(MFR_1,1,[]); % convert matrix to row vector
c = reshape(SN_maxes_1,1,[]); % convert matrix to row vector
figure(4)
clf
hold on
scatter(b, a, [], c, 'filled') 
% create a mesh with constant log spacing , and find points that are inside
% a polygon  (convex hull)
bl = log10(b');
al = log10(a');
cl = log10(c');
k = boundary(bl,al,1); % define outer hull 
xv = bl(k);
yv = al(k);
% plot(10.^xv, 10.^yv, '-r')
x = linspace(min(xv),max(xv),200);
y = linspace(min(yv),max(yv),200);
[X,Y] = meshgrid(x,y);
x = X(:);

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ