【问题标题】:Plotting Ellipse in Matlab在 Matlab 中绘制椭圆
【发布时间】:2020-10-25 04:41:25
【问题描述】:

除了我的 R 编程课程之外,我还参加了 LaTeX 课程的介绍。我们有一个新的任务是生成一个给定函数的图形(在 Matlab 中),保存它,然后在 LaTeX 代码中调用它,就好像我们正在制作出版物一样。我的 Matlab 有点生锈,我认为我的代码不太正确。此外,它看起来不像我们提供的示例以供参考。我们被要求绘制的函数如下:1 = x^(2)/9 - y^(2)/4

我的图像应该是什么样子:

我的 Matlab 代码生成的内容:

function graph_1

clc; clear all; 

a = 9;
b = 4;
x0 = 0;
y0 = 0;
t = -pi:0.1:pi;
x = 1 - x0 + a*cos(t);
y = 1 - y0 + a*sin(t);

figure(1); clf; 
    
plot(x,y,'b','linewidth',1)
set(gca, 'fontsize', 12)
xlabel('X')
ylabel('Y')
grid on

end

一旦我得到在 Matlab 中运行的代码,我得到一个看起来很奇怪的椭圆,它看起来不像我的教授给我们作为参考的那个“漂亮”,我附上了。完整的任务是要求我们用我们选择的编程语言生成一个图,保存它,然后让 LaTeX 代码实际调用文件,然后插入到 pdf 中。我如何将这个数字导出到我电脑中的其他地方?

【问题讨论】:

  • (1) 您的椭圆参数错误,因此大小不匹配;您也不要在计算中使用b。 (2) 您的t 的结束角度与开始时的角度不同,因此存在间隙;请改用linspace。 (3) 绘制后添加axis equal,使纵横比正确。 (4) 使用print 导出为 PDF(查看文档)。 (5) 永远不要使用clear all,尤其是不要在函数内部使用! clear 本身会清除所有变量,但在函数开始时,您没有任何要清除的变量。
  • @CrisLuengo,我刚刚注意到我从未在我的代码中使用 b。您能否解释一下您对我的椭圆使用错误的参数是什么意思?
  • 你有a=9,应该是3。
  • @CrisLuengo,我将在 linspace 函数中使用什么参数?
  • 您可以输入help linspace 获取文档,或输入doc linspace 获取更详细的文档。或者直接上网看看:mathworks.com/help/matlab/ref/linspace.html

标签: matlab matlab-figure


【解决方案1】:

原本我以为我需要绘制一个椭圆,但发现我实际上需要绘制一个双曲线。无论如何,我想出了如何绘制这两个函数,因为它们的格式几乎相同,并且包含了椭圆的代码。根据我的经验,绘制这些函数的最佳方法是使用 Matlab 中的 fimplicit 函数。为了完全理解它是如何工作的,我强烈建议在命令窗口中输入help fimplicit。从那里,您可以查看有关如何绘制此类函数的文档和示例。

这是我在 Matlab 中运行的代码,以使事情正常运行。

function graph_1

clc; clear; 

f1 = @(x,y) x.^(2)/9 + y.^(2)/4 - 1;

fimplicit(f1, 'b');
grid on;
axis equal;

print(figure(1), '-dpng') %% Saves a picture of the image in png format. 

end

然后这是我生成的椭圆:

【讨论】:

  • 边缘看起来有点截断,但那是因为我没有在绘图部分使用axis equal 函数。我还注意到分配的原始方程是双曲线而不是椭圆。代码仍然有效,您只需更改 f1 变量中的 + 号即可获得双曲线。
  • 您可能会发现xlim()ylim() 很有用
猜你喜欢
  • 1970-01-01
  • 2015-05-08
  • 2013-04-01
  • 1970-01-01
  • 2012-07-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多