%Apartado a
v=xlsread('sotaventogaliciaanual.xlsx');  %Leo datos de excel

figure(1)
plot(v); grid on; title('Velocidad del viento')  %Plot de la velocidad

figure(2);
hd=0:1:25;  %Divisiones del histograma
hist(v,hd); grid on; title('Velocidad del viento')  %Histograma de la velocidad
%Apartado b
figure(3)
%interpolar si fuese necesario
if any(isnan(v)) %si hay algún NaN
    x=1:length(v);
    i=find(~isnan(v));
    v=interp1(x(i),dw(i),x);
end
%histo
x=0:1:max(v);  %Divisiones del histograma
h=hist(v,x); grid on
fr=h/sum(h);  %frecuencia y Weibull
f=@(a,x)(a(1)/a(2))*((x/a(2)).^(a(1)-1)).*exp(-(x/a(2)).^a(1));
a0=[2 8];  %valor inicial parámetros
a=nlinfit(x,fr,f,a0);
hold on

bar(x,fr)  %diagrama de frecuencias

%para representar la curva de ajuste
x=linspace(0,max(v),100);
y=f(a,x);
plot(x,y,'r','Linewidth',2)
%Titulo y nombre de ejes
title('Ajuste con Weibull'); xlabel('Velocidad');
hold off
%Apartado c
figure(4)
Pr=1300; x0=3; xr=20; x1=25; %Para. curva de potencia
k=2.3849; c=6.0208; %Weibul calculados
potencia=xlsread('sotavento_curva potencia.xlsx','B2:B27');
x=0:1:25;
pot=potencia(x>=x0 & x<=xr);
hold on
x=x0:1:xr;
plot(x,pot,'r*','markersize',5,'markerfacecolor','r')
title('Ajuste de la curva de potencia de un generador');
axis([0 15 -10 1550])
xlabel('Velocidad')
ylabel('Potencia')
grid on

%Ralizo el ajuste
p=polyfit(x,pot',3); %ajuste a un polinomio de tercer grado
yp=polyval(p,x);
plot(x,yp,'k')
hold off
%Apartado d
%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)
v=xlsread('sotaventogaliciaanual.xlsx');
%interpolar si fuese necesario
if any(isnan(v)) %si hay algún NaN
    x=1:length(v);
    i=find(~isnan(v));
    v=interp1(x(i),v(i),x);
end

%parámetros c y k  la función de Weibull
x=0.5:1:max(v);
h=hist(v,x);
%pasar a frecuencias y ajustar a la función de Weibull
fr=h/sum(h);
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
a=nlinfit(x,fr,f,a0);
k=a(1), c=a(2)
fprintf('Parámetros Weibull: k=%1.4f, c=%1.4f\n',k,c)
La potencia media es: 203.4

k =

    2.3849


c =

    6.0208

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