How to use a function with array output for each value in a different array?
4 ビュー (過去 30 日間)
古いコメントを表示
Hello,
I am trying to calculate how much of the sun's energy is collected by the earth every year in a particular location.
I have already calculated how much energy is collected for every daylight hour in one day. To do this, I calculated the zenith angle for the sun at every daylight hour:
phi = 43 % longitude
delta = 7 % solar declination
w = [80 , 60 , 50 , 30 , 20 , 5] % sun angles at every daylight hour
zenith = acosd((cosd(phi)*cosd(delta)*cosd(w))+(sind(phi)*sind(delta))); % zenith angles
This gives me 6 zenith angles for each angle input. So I have the zenith angles for a day.
I now want to do this for every day of the year.
Each day, the solar declination (delta) changes. I can calculate these values, delta ends up being an array with 365 values.
Because delta and w have different array sizes, I haven't been able to use this function for these two arrays at once and I do not know how to do them separately. Ideally, I would want a matrix with each day's zenith angles on each row of the matrix.
How do I do this?
0 件のコメント
採用された回答
Stephen23
2021 年 10 月 6 日
"Ideally, I would want a matrix with each day's zenith angles on each row of the matrix."
That is easy, just make sure that DELTA and W are vectors with the appropriate orientations. Note also that I used TIMES (i.e. element-wise multiplication) and not MTIMES (i.e. matrix multiplication) like you used.
phi = 43; % longitude
delta = (0:0.1:20).'; % solar declination for lots of days
w = [80,60,50,30,20,5]; % sun angles at every daylight hour
zenith = acosd((cosd(phi).*cosd(delta).*cosd(w))+(sind(phi).*sind(delta)))
その他の回答 (0 件)
参考
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!