【问题标题】:How do I flip a function across its center line?如何将函数翻转到其中心线?
【发布时间】:2014-01-15 03:10:44
【问题描述】:

假设定义的函数以点 (a,b) 开始,以点 (c,d) 结束。我如何翻转这个函数关于它的垂直中心线(由 x = (c-a)/2 描述)?

提前致谢!

c = 5.2;
alpha = 0; 

R = [cosd(alpha) sind(alpha) 0; -sind(alpha) cosd(alpha) 0; 0 0 1]; 
l1_vector = [-sqrt(3)*c; 0; 0];
l1_prime = R*l1_vector;

iter = 1;

for i=1:1201
        R = [cosd(alpha) sind(alpha) 0; -sind(alpha) cosd(alpha) 0; 0 0 1]; 
        l1_prime = R*l1_vector; 
        a = l1_prime(1)
        b = l1_prime(2);
        alpha = alpha+.1;
        data1(iter,1:2)=[a,b];
        iter=iter+1;
    end      

a = data1(:,1);
b = data1(:,2);

plot(wrev(a)+a(end)-a(1),b)
axis equal

【问题讨论】:

  • 你已经尝试过什么,为什么没有成功?
  • 在这种反射中,我知道 y 坐标不会改变。 x坐标理论上可以通过将中心线左侧的每个数据点添加到该点与中心线之间的每个水平差来计算,并对中心线右侧的点做同样的事情但减去.无论出于何种原因,这对我不起作用并给了我错误的结果。它似乎也比它需要的更乏味。

标签: matlab function plot mirror


【解决方案1】:

取决于你的函数是如何真正定义的,但如果你有一个由x 值组成的向量和另一个具有相应函数值y 的向量,那么

plot(x,y)

正常绘制函数,并且

plot(a,b,2*a(end)-a(1)-cumsum([0;diff(a)]),b)

绘制翻转和平移的函数。

【讨论】:

  • 我试了一下,但似乎没有用。基本上,我有一个函数要翻转并添加到我最后一个函数的末尾。它有点像麦当劳的 M。想象一下绘制 M 的左半部分,然后围绕其中心线翻转该部分并将其平移以完成 M。
  • plot(wrev(x)+(c-a)/2,y) 呢?
  • 是的,我认为wrev(x)+c-a 是你想要的。
  • 翻转函数从正确的位置开始,但实际函数本身是扭曲的,而不是初始函数的实际镜像。
  • 你能举一个显示错误行为的例子吗?我正在测试 x=0:.1:2y=sin(x)plot(x,y,wrev(x)+x(end)-x(1),y) 似乎可以按您的意愿工作。
猜你喜欢
  • 2018-04-15
  • 2019-11-12
  • 1970-01-01
  • 1970-01-01
  • 2012-03-18
  • 1970-01-01
  • 2014-11-05
  • 1970-01-01
  • 2022-01-19
相关资源
最近更新 更多