当前位置: 首页 > 知识库问答 >
问题:

如何在Python/Matlab中在极坐标网格上绘制多个磁滞回线?

归俊杰
2023-03-14

我想用Python或Matlab在极坐标网格上绘制多个磁滞回线(如下图所示,摘自一篇论文)。我知道如何在matlab中使用极坐标图函数,但我正在努力解决这个问题,尤其是重新调整磁滞回线的大小以及如何定义θ

共有1个答案

程仲卿
2023-03-14

如果您不依赖于一个轴中的图形。假设我们有两个矩阵HystXHystY,其中包含N行,每个行描述i-第滞后循环。

polar(0,1.5)  % Hack to get 8 smaller
hold on
polar(1:0.1:2*pi(),abs(sin(1:0.1:2*pi()))) % Print the eight
set(gcf,'units','centimeters')
set(gca,'units','centimeters')

AXpos=get(gca,'position')  % axes position
AXCentre=[AXpos(1)+0.5*AXpos(3);AXpos(2)+0.5*AXpos(4)];
Radius=min(AXpos(3:4));

N=18;   % Number of hysteresis loops

Theta=0:1/N:1-1/N;  % distribute Theta evenly
Theta=2*pi()*Theta; % distribute Theta in range of (0,2Pi)

% coordinates of centres of minor axes relative to major axes centre.
axX=2/3*Radius*cos(Theta);
axY=2/3*Radius*sin(Theta);

% align the reference centre with centre of major axes, compensate dimensions of minor axes
axX=axX+AXCentre(1)-0.5; % -0.5 for axes with width/height = 1
axY=axY+AXCentre(2)-0.5;

for ii=1:N
   MinorAX=axes('units','centimeters','position',[axX(ii),axY(ii),1,1])
   line=('xdata',HystX(ii,:),'ydata',HystY(ii,:),'parent',MinorAX(ii))
end

set(MinorAX,'visible','off')  %disappear minor axes;

如果你想把所有的东西都放在一个轴上,你可以用这个例子:在第一部分中,我生成一组“磁滞回线”,然后在极坐标中绘制“8”,最后绘制磁滞回线。这是基于这样一个事实,即极坐标图在“真实、隐藏轴”内创建“假轴”(set(gca,'visible','on')将显示它们)。

close all;clear all;        % get rid off variables and figures
N=12;                       % number of hysteresis loops
HystX=zeros(N,100);         % X-values for loops
HystY=HystX;                % Y-values for loops
TempH=2*pi()*[0:0.01:1];    % Base for loops' content
TempV=2*pi()*[0:1/N:1-1/N]; % Phase lead to differ the loops; position of the loop in axes
%% Calclate the loops' cooordinates
for ii=1:N
  for jj=1:101
    HystX(ii,jj)=0.1*cos(TempH(jj));
    HystY(ii,jj)=0.1*sin(TempH(jj)+TempV(ii));
  end
end

%% Plot the content oi polar axes
polar(0,2)
hold on
polar(TempH,abs(sin(TempH)))
% set(gca,'visible','on')

%% Plot the hysteresis loops.
for ii=1:12
  line('xdata',HystX(ii,:)+(1.5*cos(TempV(ii))),...
       'ydata',HystY(ii,:)+(1.5*sin(TempV(ii))))
end
 类似资料:
  • 我需要绘制磁滞回线,然后计算回线内闭合的面积。我正在使用JFreeChart。 考虑以下数据: 当我尝试: 我想区别在于点的连接方式。请指导如何用jFreeChart获得所需的磁滞回线,然后如何计算封闭面积。 谢谢

  • 我试图写一个函数,它以笛卡尔坐标系中的x和y值作为输入,并输出极坐标和三角坐标形式。我希望输出包含指数和正弦/余弦,而不是实际值。例如,如果笛卡尔函数是z=1i,我希望函数输出z=sqrt(2)e^(ipi/4)和z=sqrt(2)(cos(pi/4)Isin(pi/4)。我该怎么做? 函数坐标(x, y) r=sqrt(x.^2 y.^2); θ=atan(y./x); Polarcoord=r

  • 我是JavaFx的新手,我想知道如何绘制网格,我想在网格角上绘制点。我应该使用网格窗格作为基础还是线条图?使用网格并在其上绘制的最佳类是什么?

  • 编辑:我决定把这个问题分成两部分,因为它实际上是两个问题:1。如何在MATLAB中绘制极曲面图(本问题)和2。如何将拟合极坐标数据点放入粗略(非极坐标)矩阵 我有一个包含某些灰色值(介于0和1之间的值)的矩阵。这些点存储在一个矩形矩阵中,但实际上数据点是通过旋转探测器获得的。这意味着我实际上有极坐标(我知道起始矩阵中每个像素的极坐标)。 我想制作一个数据点的极线图。我有下面的例子。 因为MATLA

  • 我有一个包含坐标的.csv文件,我需要在我做过的地图上使用python绘制它们。有人能帮我吗?

  • 欢迎阅读另一个 Matplotlib Basemap 教程。 在本教程中,我们将介绍如何绘制单个坐标,以及如何在地理区域中连接这些坐标。 首先,我们将从一些基本的起始数据开始: from mpl_toolkits.basemap import Basemap import matplotlib.pyplot as plt m = Basemap(projection='mill',