Why do i get this error when i run the code?

2 visualizaciones (últimos 30 días)
prem kumar
prem kumar el 29 de En. de 2022
Comentada: prem kumar el 29 de En. de 2022
Hello there friends i tried to run this code in matlab r2021b
dn=1:1:365;
x=(360/365*(dn+284));
sdelta=23.45*(sind(x)*pi/180);
L=(0:20:80);
k=(0:0.5:24);
lamda=15*(12-k);
solar_altitude=asind(sind(sdelta)*sind(L)+cosd(sdelta)*cosd(L)*cosd(lamda));
but the system shows this error ...can anybody help me out.Thank you.
Error using *
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches
the number of rows in the second matrix. To perform elementwise multiplication, use '.*'.
Error in p2 (line 43)
solar_altitude=asind(sind(sdelta)*sind(L)+cosd(sdelta)*cosd(L)*cosd(lamda));

Respuesta aceptada

Walter Roberson
Walter Roberson el 29 de En. de 2022
dn=1:1:365;
x=(360/365*(dn+284));
sdelta=23.45*(sind(x)*pi/180);
L=(0:20:80);
k=(0:0.5:24);
lamda=15*(12-k);
whos
Name Size Bytes Class Attributes L 1x5 40 double dn 1x365 2920 double k 1x49 392 double lamda 1x49 392 double sdelta 1x365 2920 double x 1x365 2920 double
solar_altitude=asind(sind(sdelta)*sind(L)+cosd(sdelta)*cosd(L)*cosd(lamda));
Error using *
Incorrect dimensions for matrix multiplication. Check that the number of columns in the first matrix matches the number of rows in the second matrix. To perform elementwise multiplication, use '.*'.
sdeleta is 1 x 365 so sind(sdelta) is also 1 x 365
L is 1 x 5 so sind(L) is 1 x 5
(1 x 365) * (1 x 5) is an invalid operation.
It looks to me as if you want a result that is per-latitude and per-day -- so a 2D result. For long term graphing purposes it is probably easiest to have connect all of the days for a particular latitude, so you probably want one line per latitude (ignoring the other factors for now), so you should arrange for sdelta to be a column.
  5 comentarios
Walter Roberson
Walter Roberson el 29 de En. de 2022
dn = (1:1/24:365).';
x=(360/365*(dn+284));
sdelta=23.45*(sind(x)*pi/180);
L=(0:20:80);
k = mod(dn, 1) * 24;
lamda=15*(12-k);
whos
Name Size Bytes Class Attributes L 1x5 40 double dn 8737x1 69896 double k 8737x1 69896 double lamda 8737x1 69896 double sdelta 8737x1 69896 double x 8737x1 69896 double
part1 = sind(sdelta)*sind(L); size(part1)
ans = 1×2
8737 5
part2a = cosd(sdelta)*cosd(L); size(part2a)
ans = 1×2
8737 5
part2 = part2a .* cosd(lamda); size(part2)
ans = 1×2
8737 5
solar_altitude = asind(part1 + part2);
whos
Name Size Bytes Class Attributes L 1x5 40 double ans 1x2 16 double dn 8737x1 69896 double k 8737x1 69896 double lamda 8737x1 69896 double part1 8737x5 349480 double part2 8737x5 349480 double part2a 8737x5 349480 double sdelta 8737x1 69896 double solar_altitude 8737x5 349480 double x 8737x1 69896 double
plot(dn, solar_altitude); legend(string(L))
plot(dn(1:200), solar_altitude(1:200,:)); legend(string(L))
Perhaps the equations are not correct when dn is fractional ?
prem kumar
prem kumar el 29 de En. de 2022
but i looked at solar radiation conference book this is the same equation he used...but is it possible if to make like only for the hundredth day dn=100 instead of dn=1:200?

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Polar Plots en Help Center y File Exchange.

Etiquetas

Productos


Versión

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by