Sorry the line that I mentioned is not 32, it's the line with beta(j) = acosd...
Problem with dash and number of values
2 views (last 30 days)
Show older comments
Sarah Kneer
on 23 Dec 2020
Commented: Walter Roberson
on 31 Dec 2020
I was doing this script, in which I should have 72 answers (24 answers with each value of d), but I only have 24 value, hence, my script is only considering one of my values of d. Also, in line 32 it says the dash is incorrect, please help me with that. The script is as follows:
phi = 53;
d = 100:100:365;
for i = 1:1:length(d)
delta(i) = -23.45 * cosd((360/365) * (d(i)+10));
end
h = 1/24:1/24:1;
for i = 1:1:length(d)
for j = 1:1:length(h)
h_a(j) = 360 * (h(j)-0.5);
alpha(j) = asind(((sind(phi) * sind(delta(i))) + (cosd(phi) * cosd(delta(i)) * cosd(h_a(j)))));
theta(j) = 90 - alpha(j);
end
if h <= 0.5
beta(j) = -acosd((((sind(delta(i)) * cosd(phi)) - (cosd(h_a(j)) * cosd(delta(i)) * sind(phi)))/sind(theta)));
else
beta(j) = acosd((((sind(delta(i)) * cosd(phi)) - (cosd(h_a(j)) * cosd(delta(i)) * sind(phi))))/sind(theta));
end
end
Accepted Answer
Walter Roberson
on 23 Dec 2020
theta is a vector so /sind(theta) is attempting to do a Matrix Right Division operation, which fails because the left side is not the correct size for mrdivide.
In order for that code to work, theta would have to be a column vector, and the left side of the / would also have to be a column vector, so that the / mrdivide operation could return a scalar (essentially a least-squared fit.)
... Or you could index theta so that you have scalar divided by scalar.
3 Comments
Walter Roberson
on 31 Dec 2020
if h <= 0.5
beta(i,j) = -acosd((((sind(delta(i)) * cosd(phi)) - (cosd(h_a(j)) * cosd(delta(i)) * sind(phi)))/sind(theta)));
else
beta(i,j) = acosd((((sind(delta(i)) * cosd(phi)) - (cosd(h_a(j)) * cosd(delta(i)) * sind(phi))))/sind(theta));
end
More Answers (0)
See Also
Categories
Find more on Logical 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!