How can I plot this equation? keep getting ??? Error using ==> mtimes Inner matrix dimensions must agree.'
1 view (last 30 days)
Show older comments
The code I have is:
T=[0:0.1:24];
omega=((12-T)/24)*360;
phi=[-180:1:180]
alpha = [0:1:90];
latitude=45;
delta=[-23.5:0.5:23.5];
sind(alpha)=sind(delta).*sind(latitude)+cosd(delta).*cosd(latitude).*cos(omega)
cosd(phi)=(sind(alpha).*sind(latitude)-cosd(delta))./(cosd(alpha).*cosd(latitude))
alpha represents my y-axis and is an angle between 0 and 90 degrees. phi represents my x-axis and is an angle between say -120 to +120.
Whenever I try to input that last line I get the error stating inner matrix dimensions must agree. So I tried to reshape my matrices for those variables I defined so that they work. But then I get '??? ??? Subscript indices must either be real positive integers or logicals.'
It seems very tedious to have to reshape my matrix every time I define a new set of variables in order to use them with an equation. Those variables are used for defining my axis range, is there a better way I can lay them out or an automatic command that will make sure they work every time?
I want to plot alpha and phi as a graph using something like
plot(alpha,phi)
but can't get past those errors? can't I just use a command that says something like define x-axis [0:90], define y-axis [-120:120] or something?
Thanks
0 Comments
Accepted Answer
David Sanchez
on 16 Oct 2013
Define your variables with linspace:
T=linspace(0,24,100);
omega=((12-T)/24)*360;
phi=linspace(-180,180,100);
alpha = linspace(0,90,100);
latitude=45;
delta=linspace(-23.5,23.5,100);
You'll get the same number of elements on each array. Your:
sind(alpha)=sind(delta).*sind(latitude)+cosd(delta).*cosd(latitude).*cos(omega);
cosd(phi)=(sind(alpha).*sind(latitude)-cosd(delta))./(cosd(alpha).*cosd(latitude));
are incongruently defined. What do you really want, alpha or sind(alpha)? why do you define alpha and phi as you did in
phi=linspace(-180,180,100);
alpha = linspace(0,90,100);
?
Do you want something like this?
alpha=sind(delta).*sind(latitude)+cosd(delta).*cosd(latitude).*cos(omega);
phi=(sind(alpha).*sind(latitude)-cosd(delta))./(cosd(alpha).*cosd(latitude));
plot(alpha,phi,'.')
More Answers (1)
Image Analyst
on 16 Oct 2013
omega is 1 by 241 while latitude is 1 by 95 so they're not the same number of elements so you can't do an element-by-element sum or product.
2 Comments
Image Analyst
on 16 Oct 2013
You can use linspace(startingValue, endingValue, numberOfElements) instead of startingValue : stepValue : endingValue to get exactly the number of elements you want.
See Also
Categories
Find more on Loops and Conditional Statements in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!