2 svar
82 visningar
våfflormedgrädde är nöjd med hjälpen
våfflormedgrädde 41
Postad: 25 apr 2022 15:19

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?

Laguna Online 28443
Postad: 25 apr 2022 15:24

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.

våfflormedgrädde 41
Postad: 25 apr 2022 15:33
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.

Svara Avbryt
Close