change a vector field into contour lines

3 ビュー (過去 30 日間)
PAUL
PAUL 2023 年 6 月 19 日
コメント済み: Cris LaPierre 2023 年 6 月 19 日
I have a program that graphs magntic field as vectors and I'd like to change the vector field to contour lines.
% Read the data from the CSV files
csvFile = 'C:\Users\paull\Desktop\magnetic probe data\coeff.csv';
data = readmatrix(csvFile);
csvFile2 = 'C:\Users\paull\Desktop\magnetic probe data\coeff.angle1.csv';
data2 = readmatrix(csvFile2);
textdata = readtable(csvFile, 'PreserveVariableNames', true);
probe = data(:, 2);
probNum = data(:, 5);
direction = table2cell(textdata(:, 8)); % Convert to cell array
zpos = data(:, 9);
rpos = data(:, 10);
pol = data(:, 13); % Polarity
ok = data(:, 14);
channel = data(:, 6);
NSRC = data(:, 12);
RC = 1 ./ data(:, 4);
angRaw = data2(2, :);
ang = angRaw(1:end-1);
angle = size(channel);
% finds the angle that each of the 10 channels have
for i = 1:192
strValue = num2str(channel(i));
if strcmp(strValue, 'NaN')
angle(i) = 0;
channel(i) = 0;
else
angle(i) = ang(channel(i));
end
if strcmp(num2str(rpos(i)), 'NaN')
rpos(i) = 0;
end
if strcmp(num2str(zpos(i)), 'NaN')
zpos(i) = 0;
end
end
% Create a containers.Map to store the parameter values for each probe
DataMap = containers.Map('KeyType', 'double', 'ValueType', 'any');
% Iterate over the rows and populate the DataMap
for i = 1:size(data, 1)
probeID = probe(i); % Get the probe ID for the current row
% Store the parameter values for the probe
parameters = struct('probe', probe(i), 'direction', direction{i}, ...
'zpos', zpos(i), 'rpos', rpos(i), 'pol', pol(i), 'ok', ok(i), ...
'channel', channel(i), 'NSRC', NSRC(i), 'angle', angle(i), 'RC', RC(i));
if ~isKey(DataMap, probeID)
DataMap(probeID) = parameters;
else
% If the probe already exists in the map, append the new parameters to the existing ones
existingParams = DataMap(probeID);
updatedParams = catstruct(existingParams, parameters);
DataMap(probeID) = updatedParams;
end
end
%organizes the raw data
BzMap = containers.Map('KeyType', 'double', 'ValueType', 'any');
% Iterate over each probe and store its Bz measurements in the hashtable
for i = 1:192
probeID = i;
BzMap(probeID) = rawdata(i, :);
end
% Accessing Bz measurement for probe 10 at time step 480
probeID = 10;
timeStep = 492;
BzValue = rawdata(timeStep, probeID);
% Iterate over each probe and store its Bz measurements in the hashtable
for i = 1:192
probeID = i;
BzMap(probeID) = rawdata(i, :);
end
% Manually set the axis limits
xlim([0 0.3]); % Set the x-axis limits from 2 to 8
ylim([0 0.3]); % Set the y-axis limits from -1 to 1
mag = zeros(size(probNum));
hold on;
zm = size(rpos);
rm = size(rpos);
% Iterate over each probe and plot the corresponding unit vector
for i = 1:numel(probe)
probeID = probe(i);
params = DataMap(probeID);
directionValue = params.direction;
polarity = params.pol; % Get the polarity of the probe
% Check the direction value
if strcmp(directionValue, 'z')
% Plot a unit vector parallel to the z direction
mag(i) = rawdata(timeStep, i) * NSRC(i);
rm(i) = 0;
zm(i) = 1 * mag(i);
if abs(mag(i)) > 1
mag(i) = 0;
end
if polarity < 0
quiver3(zpos(i), rpos(i), 1, -1, 0, 0, 'LineWidth', 2, 'Color', 'b', 'AutoScaleFactor', (mag(i) * 2));
else
quiver3(zpos(i), rpos(i), 1, 1, 0, 0, 'LineWidth', 2, 'Color', 'b', 'AutoScaleFactor', (mag(i) * 2));
end
elseif strcmp(directionValue, 't')
% Calculate the angle offset from the r direction
angleValue = params.angle;
x = sin(pi - angleValue);
y = cos(pi - angleValue);
z = 0;
mag(i) = rawdata(timeStep, i) * NSRC(i) * pol(i) * -1;
if abs(mag(i)) > 1
mag(i) = 0;
end
rm(i) = -x * mag(i);
zm(i) = y * mag(i);
% Plot a unit vector at the specified angle offset from the r direction
quiver3(zpos(i), rpos(i), 1, x, y, z, 'LineWidth', 2, 'Color', 'r', 'AutoScaleFactor', (mag(i) * 2));
else
% Plot a dot for probes with NaN direction values
scatter3(zpos(i), rpos(i), 1, 'Marker', '.', 'MarkerFaceColor', 'k');
end
end
% Adjust the aspect ratio of the plot
pbaspect([5 5 5]);
% Adjust the viewing angle
view(6,30);
  1 件のコメント
Cris LaPierre
Cris LaPierre 2023 年 6 月 19 日
Please attach your data files to your post using the paperclip icon.

サインインしてコメントする。

回答 (0 件)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by