Filter löschen
Filter löschen

Problem with dash and number of values

1 Ansicht (letzte 30 Tage)
Sarah Kneer
Sarah Kneer am 23 Dez. 2020
Kommentiert: Walter Roberson am 31 Dez. 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
  1 Kommentar
Sarah Kneer
Sarah Kneer am 23 Dez. 2020
Sorry the line that I mentioned is not 32, it's the line with beta(j) = acosd...

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Walter Roberson
Walter Roberson am 23 Dez. 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 Kommentare
Sarah Kneer
Sarah Kneer am 23 Dez. 2020
So I solved that line but I’m still only getting 24 answers, any idea of how I can get all the answers?
Walter Roberson
Walter Roberson am 31 Dez. 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

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by