Vad gör jag för fel i min kod och for loop? Ska skriva en kod för "rullande medelvärde"
Uppgift: Importera mätdata i form av tabeller och plotta data mha Matlab som en funktion av tiden. Beräkna sedan med ett "rullande medelvärde" och plotta dessa medelvärden i samma diagram.
Vår data ska bygga på folkhälsomyndighetens covid statistik. Variabeln jag valt att undersöka är antalet intensivvårdade.
Min kod (inklusive matlabs felmeddelanden):
covid_tabell = readtable("Folkhalsomyndigheten_Covid19.xlsx","Sheet",3);
felmeddelande: Warning: Column headers from the file were modified to make them valid MATLAB identifiers before creating variable names for the table. The original column headers are saved in the VariableDescriptions property.
Set 'PreserveVariableNames' to true to use the original column headers as table variable names.
medelvarde_interval = 7;
antal_intensivardade = covid_tabell{:,2};
datum = covid_tabell{:,1};
interval_datum = 1:medelvarde_interval;
medelvarden = zeros(size(interval_datum));
for i = 1:length(antal_intensivardade)
sum=0;
sum = sum + antal_intensivardade(i);
for k = 0:(medelvarde_interval-1)
sum = sum + antal_intensivardade(i+k);
end
medelvarden(i) = sum/medelvarde_interval;
end
felmeddelande: Index exceeds the number of array elements (776).
bar(datum,antal_intensivardade,7,"FaceColor",'b')
title("Antal intensivvårdade med rullande medelvärde RM7")
xlabel("Datum")
ylabel("Antal intensivardade")
grid on
hold on
plot(interval_datum,medelvarden,"LineWidth",1)
hold off
Min bekymmer: 1)Fattar inte fel meddelanden. 2)Kan man skriva for loopen på ett annat sätt?
Indexet i antal_intensivvardade(i+k) kan bli antalet i den vektorn plus 6. Det är ju utanför vektorn.
Det verkar bäst att bara gå upp till length(antal_intensivvardade) - medelvarde_intervall.
Laguna skrev:Indexet i antal_intensivvardade(i+k) kan bli antalet i den vektorn plus 6. Det är ju utanför vektorn.
Det verkar bäst att bara gå upp till length(antal_intensivvardade) - medelvarde_intervall.
Tusen tack det blev mycket bättre.