绘制两个相互依赖的函数
Plotting two dependent function with respect to each other
我正在用 Matlab 编写一小段代码以实现以下目的:
X、Y、Z都是向量,对应不同的物理量
x1 和 x2 是两个不同的向量,由 X 可以具有的允许值组成。
现在我有 Y 作为 x1 的函数
Y=f(x1)
和 Z 作为 x2 的函数
Z=g(x2)
我不知道函数 'f' 和 'g' 明确但我有一个 table 给我分别对应于 x1 和 x2 的 Y 和 Z。
所以我可以在 MATLAB 中使用 plotyy 函数绘制 Y=f(x1) 和 Z = g(x2),使用通用的 x 尺度但 2 个不同的 y 轴。
我想绘制 Y 作为 Z 的函数。最有效的方法是什么?我想我可能需要在其中某处使用插值。
提前致谢!
正如@mikkola 所提到的,插值是可行的方法。您可以将 Y 插入到 Z 的域中,将 Z 插入到 Y 的域中,或者将 Y 和 Z 插入到一个完全不同的域中。不过要小心,因为你想确保你是插值的,而不是外推的。 interp1
的默认值是线性插值,但你可以通过传入一个可选参数来实现其他类型的插值。
下面是一个例子,有两个不同的域x1
和x2
,分别对应函数Y=sin(x)
和Z=cos(x)
。这些被插值到不同的域 x3
以便 Y
和 Z
可以相互绘制,产生我们预期的圆。
% Two different domains
x1 = 0:0.02:2*pi;
x2 = 0:0.03:2*pi;
% Yielding two different functions
Y = sin(x1);
Z = cos(x2);
% Interpolate them both onto a common domain (x3)
x3 = 0:0.01:2*pi;
Yi = interp1(x1,Y,x3);
Zi = interp1(x2,Z,x3);
% Plot - circle, as expected
figure;
plot(Yi,Zi)
我正在用 Matlab 编写一小段代码以实现以下目的:
X、Y、Z都是向量,对应不同的物理量
x1 和 x2 是两个不同的向量,由 X 可以具有的允许值组成。
现在我有 Y 作为 x1 的函数
Y=f(x1)
和 Z 作为 x2 的函数
Z=g(x2)
我不知道函数 'f' 和 'g' 明确但我有一个 table 给我分别对应于 x1 和 x2 的 Y 和 Z。
所以我可以在 MATLAB 中使用 plotyy 函数绘制 Y=f(x1) 和 Z = g(x2),使用通用的 x 尺度但 2 个不同的 y 轴。
我想绘制 Y 作为 Z 的函数。最有效的方法是什么?我想我可能需要在其中某处使用插值。
提前致谢!
正如@mikkola 所提到的,插值是可行的方法。您可以将 Y 插入到 Z 的域中,将 Z 插入到 Y 的域中,或者将 Y 和 Z 插入到一个完全不同的域中。不过要小心,因为你想确保你是插值的,而不是外推的。 interp1
的默认值是线性插值,但你可以通过传入一个可选参数来实现其他类型的插值。
下面是一个例子,有两个不同的域x1
和x2
,分别对应函数Y=sin(x)
和Z=cos(x)
。这些被插值到不同的域 x3
以便 Y
和 Z
可以相互绘制,产生我们预期的圆。
% Two different domains
x1 = 0:0.02:2*pi;
x2 = 0:0.03:2*pi;
% Yielding two different functions
Y = sin(x1);
Z = cos(x2);
% Interpolate them both onto a common domain (x3)
x3 = 0:0.01:2*pi;
Yi = interp1(x1,Y,x3);
Zi = interp1(x2,Z,x3);
% Plot - circle, as expected
figure;
plot(Yi,Zi)