%cálculo de la potencia media
Pr=1300; x0=3.0;xr=20;x1=25; %datos de la curva de potencia
k=2.3849; c=6.0208; %parametros weibul calculados anteriormente
potencia=xlsread('sotavento_curva potencia.xlsx','B2:B27');
x=0:1:25;
pot=potencia(x>=x0 & x<=xr);
x=x0:1:xr;
p=polyfit(x,pot',3); %ajuste a un polinomio de tercer grado
%calculo de la potencia media
f=@(x) (k/c)*((x/c).^(k-1)).*exp(-(x/c).^k); %función de Weibull
h=@(x) f(x).*polyval(p,x);
power=quad(h,x0,xr)+Pr*quad(f,xr,x1);
fprintf('La potencia media es: %3.1f\n',power)
velocidad=xlsread('sotaventogaliciaanual.xlsx');
%interpolar si fuese necesario
if any(isnan(velocidad)) %si hay algún NaN
    x=1:length(velocidad);
    i=find(~isnan(velocidad));
    velocidad=interp1(x(i),velocidad(i),x);
end
La potencia media es: 203.4
%parámetros c y k  la función de Weibull
x=0.5:1:max(velocidad);
horas=hist(velocidad,x);
%pasar a frecuencias y ajustar a la función de Weibull
frec=horas/sum(horas);
f=@(a,x) (a(1)/a(2))*((x/a(2)).^(a(1)-1)).*exp(-(x/a(2)).^a(1));
a0=[2 8];  %valor inicial de los parámetros
af=nlinfit(x,frec,f,a0);
k=af(1), c=af(2)
fprintf('Parámetros Weibull: k=%1.4f, c=%1.4f\n',k,c)
k =

    2.3849


c =

    6.0208

Parámetros Weibull: k=2.3849, c=6.0208