need to compile outputs from for loop into array

startYear = input('Pick a year to start the Array from. \n');
endYear = input('Pick a year to end the Array at. \n');
ctr=1;
yeararray = startYear:endYear;
outputarray = []
for n = yeararray
if IsLeapYear(n) == "True"
outputarray(ctr) = outputarray(ctr) + n;
ctr = ctr + 1;
end
end
disp(outputarray)
A couple pieces of code are missing from this but i think you can understand the process, im trying to grab Leap Years in between 2 points and compile them into and Array but are struggling to do so. I tried to compile them into an array using numel():
outputarray = zeros(1, numel(yeararray))
however this makes the array way too big for the amount of values it outputs and just provides me with a bunch of zeros that are filler. Any tips?

 Akzeptierte Antwort

Torsten
Torsten am 16 Apr. 2024
Verschoben: Torsten am 16 Apr. 2024
In most cases,
outputarray = zeros(1,nnz(mod(yeararray,4)==0))
will work.

3 Kommentare

Lewis
Lewis am 16 Apr. 2024
You're a legend mate, thanks a lot
Lewis
Lewis am 16 Apr. 2024
so this doesnt work for higher ranges, any other tips for that?
i did 1:1000 and it had 0's past 996
Torsten
Torsten am 17 Apr. 2024
Bearbeitet: Torsten am 17 Apr. 2024
I wrote in most cases. The exact rule is
outputarray = zeros(1,nnz( (mod(yeararray,4) == 0 & mod(yeararray,100) ~= 0) | (mod(yeararray,400) == 0)))
Since you now know the number of leapyears within the yeararray, you can substitute your complete code by a one-liner.

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Tags

Gefragt:

am 16 Apr. 2024

Bearbeitet:

am 17 Apr. 2024

Community Treasure Hunt

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

Start Hunting!

Translated by