Как создать тепловую карту диска, имеющего разные температуры? - PullRequest
0 голосов
/ 23 мая 2018

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

У меня есть 3 набора данных, 1 длярадиус (r) диска, еще один для угла (тета) точки контакта и последний для температуры точки контакта, где происходит трение.

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

Как я уже сказал, это то, к чему я пришел, - это только определение точек, заданных результатами моделирования.

Theta = xlsread('Laiton1.xlsx',1,'G2:G3381');   % Parameter turning angle
r = xlsread('Laiton1.xlsx',1,'C2:C3381');       % Parameter radius
Tsurf_d = xlsread('Laiton1.xlsx',1,'E2:E3381'); % Temperature on the surface
x = r*cos(Theta'); % parametrical transformation of (r,Theta) for the X axis
y = r*sin(Theta'); % parametrical transformation of (r,Theta) for the Y axis
Theta1 = linspace(0,360,5000);  % Angle to define the 2 circumferences of the disk 
x1 = 0.0145*cos(Theta1); % X points for the inner circumerference
y1 = 0.0145*sin(Theta1); % Y points for the inner circumerference
x2 = 0.0475*cos(Theta1); % X points for the external circumerference
y2 = 0.0475*sin(Theta1); % Y points for the external circumerference
plot(X,Y,X1,Y1,'black',X2,Y2,'black')

1 Ответ

0 голосов

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

% Me simulating your data 
numData = 100;
Theta = (0:2*pi/(numData-1):2*pi) + (rand(1,numData)-.5)/10;
r = 23 + (rand(1,numData)-.5);
Tsurf_d = rand(1,numData)*100;

% Creating a table on which you can gather your data for plotting
resolution = 1; % Smaller number -> bigger and fewer pixels
c = resolution*ceil(max(r)) + 1; % Which pixel will be your center coordinate
width = 2*c + 1; % The width and height of your table
tempSumMap = zeros(width);
numDataMap = zeros(width);

% Calculating corresponding positions of each data point
xCoords = round( resolution*r.*cos(Theta) );
yCoords = round( resolution*r.*sin(Theta) );

% Adding the data points. In situations where two data points want to add
% to the same pixel, they both add, and numDataMap remembers to later
% divide by 2
for dataNo = 1:numData
    y = yCoords(dataNo) + c ;
    x = xCoords(dataNo) + c ;
    tempSumMap(y,x) = tempSumMap(y,x) + Tsurf_d(dataNo);
    numDataMap(y,x) = numDataMap(y,x) + 1;
end

% Remember to divide by the number of times you added a certain temperature
% to a pixel
tempMap = tempSumMap./max(1,numDataMap);

% Display the result
imagesc(tempMap)
...