Solved

Can someone please check my Matlab code to rotate a hyperbola and see what I am doing wrong

Posted on 2009-04-05
7
799 Views
Last Modified: 2016-02-10
Please find the attached pdf tutorial for matlab and multilateration.

page 4. Please see code in the codebox below however when run it does not rotate the hyperbola as per the picture on page 4. It is in a different position?

Why is this?
% Program to plot the hyperbola

% y^2/a^2 - x^2/b^2 = 1

% The hyperbolae are open up/down, so that x is the independent variable

% for plotting. (Using the form x^2/a^2 - y^2/b^2 = 1 requires that y be

% the independent variable, which is awkward programming-wise.)

clear % all variables

figure(1), hold off % start a new figure

set(gca,'FontSize',14) % adjust fontsize

xmax = 30; ymax = 20;

x = linspace(-xmax,xmax,1001);

 

a = 5; b = 3;

theta=60*pi/180; % in radians, 1 radian = 180/pi degrees

xoff=10;

yoff=5;

y=sqrt(((x.^2)./(b^2)+1).*a^2); % corresponding y values

[xout,yout] = xfm1(x,y,theta,xoff,yoff); % rotation and shift

 

plot(xout,yout)

hold on % add to current plot

[xout,yout] = xfm1(x,-y,theta,xoff,yoff); % rotation and shift of negative part

plot(xout,yout) % Plot other half of hyperbola

 

axis([-xmax xmax -ymax ymax]) % specify axis limits

xlabel('x')

ylabel('y')

 

% Add axes

plot([0 0],[-ymax ymax],'k') % y axis

plot([-xmax xmax],[0 0],'k') % x axis

title(['Hyperbola $y^2/a^2 - x^2/b^2 = 1$; $a$ = ', num2str(a), ...

', $b$ = ', num2str(b),';'],'Interpreter','latex')

% Add axes

plot([0 0],[-ymax ymax],'k') % y axis (black line - k)

plot([-xmax xmax],[0 0],'k') % x axis

Open in new window

0
Comment
Question by:jtiernan2008
  • 4
  • 3
7 Comments
 
LVL 15

Expert Comment

by:yuk99
ID: 24073370
I got almost the same figure as on your tutorial with this code without changing anything. I used the same xfm1 function file as we discussed before.
Do you get any figure with this code. If yes, how it's different from what you need? If no, do you get any errors?
0
 
LVL 1

Author Comment

by:jtiernan2008
ID: 24081290
thanks for your response

yes, I know I must be doing something wrong....
please see the attached with the code run and a screenshot from the tutorial.
It appears to not rotate the same.
pic.jpg
0
 
LVL 15

Expert Comment

by:yuk99
ID: 24081361
Change your rotation matrix in xfm1 function. I think we discussed this before. Change the sign for sines.
0
How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

 
LVL 15

Expert Comment

by:yuk99
ID: 24081392
0
 
LVL 1

Author Comment

by:jtiernan2008
ID: 24081503
"BTW I think you made a wrong rotation matrix. No, it's correct, but rotate in not usual direction. It should be
xfm = [cos(theta) -sin(theta); ...
      sin(theta) cos(theta"

=> But it is the same as you can see below;
function [xout,yout] = xfm1(xin,yin,theta,x_offset,y_offset)

% Program to rotate and translate x,y values from x",y" to x,y space.

% Written to plot hyperbolas for time of arrival code.

% theta value assumed to be in radians.
 

%  rotation matrix

xfm = [cos(theta) -sin(theta); ...

      sin(theta) cos(theta)];

% make x,y values into a column vector

r_in = [xin; yin];

% rotate 

r_out = xfm*r_in;

x = r_out(1,:); y = r_out(2,:);

xout = x + x_offset; 

yout = y + y_offset;

Open in new window

0
 
LVL 15

Accepted Solution

by:
yuk99 earned 500 total points
ID: 24081599
Usually positive angles rotate counterwise, negative clockwise. If you want opposite direction, just change both sines signes in rotatino matrix, or use negative angle. Again line along y axis has 0 degree.
0
 
LVL 1

Author Closing Comment

by:jtiernan2008
ID: 31566782
thanks a million..
I understand now
0

Featured Post

What Is Threat Intelligence?

Threat intelligence is often discussed, but rarely understood. Starting with a precise definition, along with clear business goals, is essential.

Join & Write a Comment

This article will show, step by step, how to integrate R code into a R Sweave document
The purpose of this article is to demonstrate how we can use conditional statements using Python.
Viewers will learn how to properly install Eclipse with the necessary JDK, and will take a look at an introductory Java program. Download Eclipse installation zip file: Extract files from zip file: Download and install JDK 8: Open Eclipse and …
The viewer will learn how to user default arguments when defining functions. This method of defining functions will be contrasted with the non-default-argument of defining functions.

708 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

16 Experts available now in Live!

Get 1:1 Help Now