【问题标题】:Is there any way to make an iterative plot that rotates the axes at every iteration有没有办法制作一个在每次迭代时旋转轴的迭代图
【发布时间】:2012-11-19 13:27:03
【问题描述】:

我想绘制一个图,然后将 x-y 轴旋转一个角度; 然后在旋转的轴上再次制作相同的图,然后再次旋转轴以获得下一个类似的图

类似这样的:

hold all;

for k= 0:1:10
    % rotate-axis-about-origin(angle * k)
    plot(XY(:,1),XY(:,2));
end

有什么方法可以实现我的建议吗?

【问题讨论】:

    标签: matlab for-loop rotation plot axes


    【解决方案1】:

    在循环内使用旋转矩阵:

    hold all;
    
    % test vector and matrix
    x = (1:10)';
    y = x.^2;    
    XY0 = [x y];
    
    angle = 1/180*pi;   % 1 degree
    
    for k= 0:1:10
        % rotate-axis-about-origin(angle * k)
        rot = [cos(angle*k) sin(angle*k);-sin(angle*k) cos(angle*k)];
        XY = XY0*rot;
        plot(XY(:,1),XY(:,2));
    end
    

    XY0 是原始矩阵,XY 每一步都不同。

    希望这是您正在寻找的。​​p>

    【讨论】:

      【解决方案2】:

      您可以通过camroll 在每一步滚动相机来做到这一点。这是绘制正弦的玩具工作示例:

      hold all
      
      x = -3:0.01:3;
      y = sin(x);
      angle = 1; % in degrees
      for k = 1:90 % 90 steps
          plot(x,y, 'k');
          camroll(angle); % roll 'angle' degrees at each step
          drawnow
          pause(0.05)
      end
      

      【讨论】:

      • 将 camroll(angle) 更改为 camroll(angle*k) 否则您将在每个循环通过时将轴固定在相同的角度。
      • 没有。我正在使用 R2011b,它在每一步都会增量旋转。
      • 这就像 petrichor 在使用 R2012a 时所说的那样工作(尽管对我来说 angle*k 更有意义)。然而,它会覆盖它之前的图。如果它离开了他们,这个解决方案会满足我的需求。
      • 好的,我使用的是 R2009a,这就解释了为什么它不适合我。
      • @DeanKayton 我很高兴它有帮助。如果这个答案是您所需要的,请接受它作为您问题的答案。
      猜你喜欢
      • 1970-01-01
      • 2016-09-23
      • 1970-01-01
      • 2019-06-03
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多