gpt4 book ai didi

matlab - 如何在 matlab 中绘制第二个图形而不是颜色编码

转载 作者:太空宇宙 更新时间:2023-11-03 19:39:31 25 4
gpt4 key购买 nike

我刚开始写我的硕士论文,但我对 matlab 的能力/理解已经遇到了麻烦。

问题是,我在行星/月球的表面上有一个轨迹(一个带有时间和坐标的 .mat。然后我有一些带有时间和当时测量值的 .mat。

我可以在 scatter() 中将其绘制为彩色编码轨迹(使用测量值和坐标)。这非常好用。

但是我的问题是我需要更复杂的东西。我现在需要获取轨迹而不是对其进行颜色编码,我应该将测量的图形(值)(为每个点给出)添加到轨迹(并不总是一条直线)。我会添加一个小草图来解释我想要什么。红色箭头显示我想要添加到我的绘图中的内容,绿色显示我拥有的内容。

enter image description here

最佳答案

您始终可以自己转换数据:(使用与@Shai 相同的符号)

x = 0:0.1:10;
y = x;
m = 10*sin(x);

所以你需要的是在每个数据点垂直于曲线的向量:

dx = diff(x); % backward finite differences for 2:end points
dx = [dx(1) dx]; % forward finite difference for 1th point
dy = diff(y);
dy = [dy(1) dy];
curve_tang = [dx ; dy];
% rotate tangential vectors 90° counterclockwise
curve_norm = [-dy; dx];
% normalize the vectors:
nrm_cn = sqrt(sum(abs(curve_norm).^2,1));
curve_norm = curve_norm ./ repmat(sqrt(sum(abs(curve_norm).^2,1)),2,1);

将该向量与测量值 (m) 相乘,用数据点坐标对其进行偏移即可:

mx = x + curve_norm(1,:).*m;
my = y + curve_norm(2,:).*m;

绘制它:

figure; hold on
axis equal;
scatter(x,y,[],m);
plot(mx,my)

straightline_sine

这正是我想要的。这个例子只有一条直线作为坐标,但是这段代码可以很好地处理任何曲线:

x=0:0.1:10;y=x.^2;m=sin(x);

parabole_sine

t=0:pi/50:2*pi;x=5*cos(t);y=5*sin(t);m=sin(5*t);

circle_sine

关于matlab - 如何在 matlab 中绘制第二个图形而不是颜色编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14053766/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com