Привет,
У меня возникли проблемы с использованием функции контура на графике в логарифмическом масштабе. У меня есть 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(:);
СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ