✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。
🍎个人主页:Matlab科研工作室
🍊个人信条:格物致知。
更多Matlab仿真内容点击👇
⛄ 内容介绍
【数学模型】基于ARMR模型模拟风速附matlab完整代码
⛄ 完整代码
%用ARMA模型仿真风速模型
clc;clear;close all;
%初始化
I=0.16;%湍流强度
L=600;%湍流尺度
average_v=8.11850232757234;%平均风速
Ts=1;%采样时间
T=720;%模拟时间
n=T/Ts;%采样个数
sigma_u=3.48648820169842;%风速序列的标准差
sigma_noise=0.2;%白噪声的方差
% u=yyx_noice_n(0,sigma_noise,n);%产生n个序列的白噪声,均值为0,方差为1;
u=normrnd(0,sigma_noise,n);
v=zeros(1,n);
S=zeros(1,n);
wind=zeros(2,n);
df=1/T;%频率分辨率
f=(0:n-1)*df;
length_f=length(f);
for i=1:length_f
S(i)=4*(sigma_u)^2*L/average_v/(1+70.8*(f(i)*L/average_v)^2)^(5/6);%Von Karman谱功率密度函数
end
R=real(ifft(S));%自相关与功率谱密度是傅立叶变换关系,求自相关
%求解AR模型参数
a(1)=R(2)/R(1);
a(2)=R(3)/R(1)-R(2)*R(2)/R(1)/R(1);
%求解MA模型参数
Ry=(-a(1)+a(2)*a(1))*R(1)+(1+a(1)^2+a(2)^2)*R(2)+(-a(1)+a(1)*a(2))*R(3)+(-a(2))*R(4);
b=Ry/sigma_noise;%beta=Ry/白噪声的方差
%脉动风速
v(1)=u(1);
v(2)=a(1)*v(1)+u(2)+b*u(1);
for k=3:n
v(k)=a(1)*v(k-1)+a(2)*v(k-2)+u(k)+b*u(k-1);%ARMA模型
end
%风速
for k=1:n
x(k)=average_v+v(k);
end
subplot(2,1,2);
S1=abs(S);
plot(f,10*log10(S));%Von Karman型功率谱
axis([0,2,-20,30]);
title('Von Karman功率谱密度');
xlabel('f/Hz');
ylabel('S/dB');
subplot(2,1,1);
Pxx=10*log10(abs(fft(x).^2)/n);
plot(f,Pxx);
axis([0,2,-30,50]);
title('ARMA模型产生的风速序列的功率谱密度');
xlabel('f/Hz');
ylabel('S/dB');
figure(2);
t=Ts:Ts:T;
plot(t,x);hold on;
axis([0,T,0,16]);
title('风速');
xlabel('时间/s');
ylabel('速度/ms-1');
%输出风速序列
for k=1:n
wind(1,k)=t(k);
wind(2,k)=x(k);
end
⛄ 运行结果
⛄ 参考文献
[1]陆琴. 基于MATLAB的风力发电系统风速模型的研究[J]. 工业控制计算机, 2016(7):3.
⛄ Matlab代码关注
❤️部分理论引用网络文献,若有侵权联系博主删除
❤️ 关注我领取海量matlab电子书和数学建模资料