Fearless798 2024-04-28 14:31 采纳率: 0%
浏览 3
已结题

matlab答疑 关于海上风电的爬坡事件检测


% 检测台风期间(7天)是否出现爬坡
%% 参数设置
% 风电出力
P_wind = [528.6    498.2    473.4    458.5    444.4    451.5    418.9    381.5    364.3    354.8    343.4    366    368.7    347.3    334.8    274.4    230.6    212.5    202.8    185.1    161.8    147    125.8    117.4    109.8    106.6    101.2    95.3    82.3    64.6    46.9    40.1    23.6    13    6.8    1.3    -3.1    -3.2    0.1    -2    -10.2    -11.1    -12.3    -8.7    4.2    14.3    28.5    37.3    54.4    57.9    72.1    93.6    115.4    138.4    115.7    123.9    128.5    139.4    151.5    161.6    157.6    143.1    158.7    197.6    234.3    278.1    308.6    275.3    260.1    248.5    215.6    206.5    230.2    229.8    251.2    219.7    228    237.1    235    215.2    214.5    206.9    186.9    183.8    210.2    236.2    249.1    303.6    372.4    489.2    604.3    741.7    857.8    1004.7    1138.7    1190.3
1232.2    1413.3    1582.6    1686.1    1722.8    1762    1698.1    1697.5    1721.3    1797.3    1813.4    1833.3    1849.9    1982.5    2139.8    2327.4    2502.3    2750.7    2929.9    3145.4    3216.1    3239.1    3382.7    3313.1    3503.4    3514.4    3643.8    3733.8    3735.2    3819.9    3829.1    3813.5    3834.3    3846.6    3874.8    3817.8    3815.6    3782    3811.2    3845.2    3891.5    3950.8    3985.8    4052    4023.6    3979.4    4070    4148.3    4225    4239.4    4180.9    4232.5    4253.8    4230.7    4227.7    4179.3    4277    4333.3    4369.8    4358.8    4352.4    4381.8    4414.6    4506.9    4551.7    4595.4    4572.1    4615    4639.9    4756.5    4763.7    4768.6    4772.1    4842.6    4896.9    4972.5    4989.2    5020.6    5076    5047.1    4998.5    5031.1    5044.8    5013.9    5021.9    4994.7    5003.6    4985.2    5034.8    5038.7    5063    5054.9    5136.2    5127.7    5109.5    5135.6
5205.5    5202.4    5169.3    5197.4    5196.9    5205.8    5196.6    5198.2    5170.9    5172.9    5213.8    5226    5235.7    5259.9    5281.4    5294.8    5268.9    5297.8    5241.8    5264.6    5265.1    5277.8    5268.1    5255.1    5248.9    5245.8    5313.5    5298.4    5290.4    5309.2    5341.7    5357.3    5313.1    5302.9    5324.4    5334.9    5315.3    5317.6    5282.1    5250.1    5247.2    5232.6    5220    5206    5196.8    5199.6    5212.9    5262    5230    5229.2    5225.7    5161    5231.5    5182.3    5180.1    5149.8    5132.6    5134.5    5148.9    5211.2    5177.8    5188.4    5151    5174    5169.8    5131.6    5166.3    5204.2    5228.1    5223.8    5245.9    5282.1    5298.7    5251.6    5255    5246.6    5252    5234.3    5227.6    5224.4    5148.6    5165.7    5126.2    5082.9    5084.4    5088.2    5092.3    5114.1    5105    5103.8    5089.1    5094.6    5075.6    5126.7    5160    5147.1
5105.3    5080.3    5106.9    5118    5103.7    5114    5060.1    5060.1    5056.9    5014.4    4972    4990.7    4999    4959    4948.2    4918.9    4883.7    4877.5    4868    4902.6    4895.6    4897.3    4900.4    4956.9    4974    4955.7    4934.1    4951.7    4961.8    4970.5    4959.7    4969.1    4945.3    4927.3    4968.4    5023.7    5024.8    5111.5    5129.2    5042.5    4977.9    4966.6    4965.1    4929.9    4946.8    4964    4953    4941.4    4963.7    4935.2    4913.5    4876.6    4866.6    4840.6    4814    4809.1    4788.3    4771.4    4801.4    4822.8    4840.5    4887.2    4861.9    4886.5    4926.7    4942.7    4953.2    4983.3    5025.5    5045.2    5025    5008.8    5003.5    4994.4    4965.7    4909.6    4850.9    4879.9    4922.8    4961.8    4932.8    4850.9    4851.1    4768    4719.1    4631.4    4649.6    4700.3    4755.9    4750.9    4725.1    4738.2    4737.6    4763.4    4791.2    4754.2
4700    4600.4    4612.5    4645.1    4695.3    4692.8    4705.9    4685.1    4677.5    4705.8    4720.8    4786.9    4694.5    4430.3    4361.6    4381.5    4356.5    4239.9    4200.4    3875.5    3428    2824.1    2310.1    2428.6    2308.7    2271.9    1910    2085.9    2038.8    2207.9    2304.2    2447.9    2528.5    2510.6    2746.4    3213.3    3438.7    3433.7    3287.3    2957.4    2961.1    3274.2    3252.9    3060.3    2818.9    2782.1    2586.1    2514.5    2368.1    2385.3    2500.1    2644.9    2709.7    2666.7    2755.6    2762.9    2775.9    2719    2552.5    2325.6    2005.7    1925.3    1895.8    1693.2    1827.3    2264.3    2578.1    2622.7    2636.4    2683    2772.4    2825    2998.8    3103.5    3125    3208.9    3260.2    3316.7    3404.7    3557.1    3528.4    3573.3    3571.3    3572.5    3566.1    3616.9    3611    3651.9    3663.7    3755.7    3799.1    3763    3833.7    3852.2    3823.5    3803.1
3639.5    3447.6    3414.5    3433    3523.5    3651.7    3674.8    3708.9    3764.1    3693.5    3688.7    3764.7    3741.4    3639.8    3722.8    3695.5    3498.8    3326.9    3278.9    3238.9    3152.9    3076.3    3015.5    2838.2    2740.3    2682    2670.6    2672.8    2693.8    2701.5    2723.3    2821.7    2889.9    2882.8    2764.9    2705.1    2714    2676.6    2530.3    2285.1    2125.2    1965.9    1850.6    1882.3    1892.7    1820.3    1807.7    1854.1    1763.2    1605.1    1541.2    1557.4    1545.9    1463.6    1341.5    1280.7    1235    1191.7    1186.9    1222.7    1156    1177.8    1132.8    1058.6    1083.4    1076.2    1042.2    1048.8    1033.2    1031.6    1034.4    1025.2    979.8    920.4    915.4    961.2    962.4    904.3    872.1    873    887.3    838.8    794.5    730.7    705.1    676.7    644.8    646.9    640.3    639.3    639.7    646.5    628.7    632.9    591.9    537.2
546.4    527.7    554.2    560.6    570.7    540.2    552    557.3    517.7    501.2    476.8    469.9    473.4    500.8    490.5    467.6    447.5    450.8    435.1    422.9    437.7    451.7    438.9    400.2    359.8    358.6    341.9    333.6    307.5    301.4    281.1    288.3    276    272.1    264.2    264.7    258.1    249.6    227.2    231.6    216.6    191.3    176.6    172.6    157.6    152    131.1    130    125.4    118.4    121.9    125.6    129.8    165.3    185.2    201.4    188.8    173.1    168.3    218.5    211.8    216.8    238.2    244.8    262.2    273    283    293.2    309    335.9    386.7    401.3    405.9    419.3    433.3    433.8    408.7    394.4    368.1    311.9    295.9    261.1    258.7    241.5    236.1    247.8    241.1    239.4    229.3    224.8    218.9    200.6    206.5    180.7    174.1    173
];
a = max(max(P_wind));
% 爬坡规则参数设置
P_wind_N = 7500;
% alpha不同时间尺度:列1-30min;2-1h;3-4h;行1-上爬坡;2-下爬坡
alpha = [0.12,0.2,0.5;0.1,0.15,0.5];
% 归一化处理
P_wind_ref = P_wind;
for i=1:7
    P_wind_ref = P_wind/P_wind_N;
end
%  30min事件集合
P_period = zeros(1,2); P_search = 0;
R_plus = zeros(7,94); R_minus = zeros(7,94);
% % 1h事件集合
% P_period = zeros(1,4); P_search = 0;
% R_plus = zeros(7,92); R_minus = zeros(7,92);
% %% 4h事件集合
% P_period = zeros(1,16); P_search = 0;
% R_plus = zeros(7,80); R_minus = zeros(7,80);
% % 4h爬坡检测
% P_period = zeros(1,16); P_search = 0;
% R_plus = zeros(7,80); R_minus = zeros(7,80);
% 
% for day=1:7
%     for ti=1:80
%         P_period = P_wind_ref(day:day,ti:ti+15);
%         max_P_period_ti = max(P_period);
%         min_P_period_ti = min(P_period);
%         %找最大值和最小值出现的时刻
%         for i=1:16
%             P_search = P_period(i);
%             if P_search - max_P_period_ti == 0
%                 max_period_ti = i;
%             end
%             if P_search - min_P_period_ti == 0
%                 min_period_ti = i;
%             end
%         end
% %         判断爬坡方向
% %         是否向上
%         if (max_P_period_ti - min_P_period_ti > alpha(1,3))&&(max_period_ti - min_period_ti > 0)
%             %向上爬坡
%             R_plus(day,ti) = 1; 
%         else 
%             R_plus(day,ti) = 0;
%         end
%         %是否向下
%         if (max_P_period_ti - min_P_period_ti > alpha(2,3))&&(max_period_ti - min_period_ti < 0)
%             %向下爬坡
%             R_minus(day,ti) = 1; 
%         else 
%             R_minus(day,ti) = 0;
%         end
%     end
% end
%  % 1h爬坡检测
% for day=1:7
%     for ti=1:92
%         P_period = P_wind_ref(day:day,ti:ti+3);
%         max_P_period_ti = max(P_period);
%         min_P_period_ti = min(P_period);
%         % 找最大值和最小值出现的时刻
%         for i=1:4
%             P_search = P_period(i);
%             if P_search - max_P_period_ti == 0
%                 max_period_ti = i;
%             end
%             if P_search - min_P_period_ti == 0
%                 min_period_ti = i;
%             end
%         end
%         % 判断爬坡方向
%         % 是否向上
%         if (max_P_period_ti - min_P_period_ti > alpha(1,2))&&(max_period_ti - min_period_ti > 0)
%             % 向上爬坡
%             R_plus(day,ti) = 1; 
%         else 
%             R_plus(day,ti) = 0;
%         end
%         % 是否向下
%         if (max_P_period_ti - min_P_period_ti > alpha(2,2))&&(max_period_ti - min_period_ti < 0)
%             % 向下爬坡
%             R_minus(day,ti) = 1; 
%         else 
%             R_minus(day,ti) = 0;
%         end
%     end
% end

%% 30min爬坡检测
for day=1:7
    for ti=1:94
        P_period = P_wind_ref(day:day,ti:ti+2);
        max_P_period_ti = max(P_period);
        min_P_period_ti = min(P_period);
        % 找最大值和最小值出现的时刻
        for i=1:3
            P_search = P_period(i);
            if P_search - max_P_period_ti == 0
                max_period_ti = i;
            end
            if P_search - min_P_period_ti == 0
                min_period_ti = i;
            end
        end
        % 判断爬坡方向
        % 是否向上
        if (max_P_period_ti - min_P_period_ti > alpha(1,1))&&(max_period_ti - min_period_ti > 0)
            % 向上爬坡
            R_plus(day,ti) = 1; 
        else 
            R_plus(day,ti) = 0;
        end
        % 是否向下
        if (max_P_period_ti - min_P_period_ti > alpha(2,1))&&(max_period_ti - min_period_ti < 0)
            % 向下爬坡
            R_minus(day,ti) = 1; 
        else 
            R_minus(day,ti) = 0;
        end
    end
end

这是识别海上风电爬坡事件的程序,设置了30min、1h、4h三个不同时间尺度,输入了7天台风天数据,每隔15min为一个数据点,放在了pwind里。但检测出的结果几乎都是0(0代表没有发生爬坡事件 1代表发生了)不知道是哪里有问题 请求指导!

  • 写回答

21条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-04-28 14:31
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    在您提供的 MATLAB 代码中,您试图检测海上风电在台风期间的爬坡事件。爬坡事件可以通过比较风电出力在一定时间尺度上的变化来识别。您的代码中有几个关键步骤,包括归一化处理、时间尺度的选择、最大和最小值的寻找以及爬坡方向的判断。

    首先,我注意到您的代码中有几个地方使用了硬编码的值,例如 P_wind_ref 的归一化处理循环和 alpha 矩阵的索引。这些硬编码的值可能会导致代码的灵活性降低,并且在改变时间尺度或数据点时可能会出现问题。

    其次,您的代码中存在一些逻辑错误。例如,在寻找最大值和最小值出现的时刻时,您使用了 P_search - max_P_period_ti == 0 这样的条件判断,这实际上是在检查 P_search 是否与 max_P_period_ti 相等,而不是它们的索引位置。此外,您的代码没有正确地处理 alpha 矩阵中的阈值,因为您没有根据时间尺度来选择正确的 alpha 值。

    为了解决这些问题,我建议您对代码进行以下修改:

    1. 使用参数来控制时间尺度和数据点,而不是硬编码。
    2. 在寻找最大值和最小值的时刻时,使用适当的逻辑来找到它们的索引。
    3. 根据选择的时间尺度动态选择 alpha 矩阵中的阈值。

    以下是修改后的代码示例:

    % 假设您已经定义了 P_wind 和 P_wind_N
    
    % 归一化处理
    P_wind_ref = P_wind / P_wind_N;
    
    % 设置时间尺度和数据点
    time_scale = 30; % 例如,30 分钟
    data_points = 7; % 台风天数
    
    % 初始化 alpha 阈值
    alpha_up = 0.12; % 上爬坡阈值
    alpha_down = 0.1; % 下爬坡阈值
    
    % 初始化爬坡事件矩阵
    R_plus = zeros(data_points, (time_scale/15)); % 假设每隔 15 分钟一个数据点
    R_minus = zeros(size(R_plus));
    
    % 30min爬坡检测
    for day = 1:data_points
        for ti = 1:size(P_wind_ref, 2) - time_scale + 1
            P_period = P_wind_ref(day:day, ti:ti + time_scale - 1);
            max_P_period_ti = max(P_period);
            min_P_period_ti = min(P_period);
            
            [max_val, max_idx] = max(P_period);
            [min_val, min_idx] = min(P_period);
            
            % 判断爬坡方向
            if (max_val - min_val > alpha_up) && (max_idx > min_idx)
                R_plus(day, ti) = 1;
            end
            if (max_val - min_val > alpha_down) && (max_idx < min_idx)
                R_minus(day, ti) = 1;
            end
        end
    end
    

    请注意,这个示例代码可能需要根据您的具体需求进一步调整。您可能需要根据实际的时间尺度和数据点来调整 time_scaledata_pointsalpha_upalpha_down 的值。此外,您可能还需要调整循环的边界条件,以确保不会超出数组的索引范围。

    希望这些修改能帮助您解决问题。如果您有任何疑问或需要进一步的帮助,请随时提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 5月6日
  • 创建了问题 4月28日

悬赏问题

  • ¥15 如何使用canvas在图片上进行如下的标注,以下代码不起作用,如何修改
  • ¥15 Windows 系统cmd后提示“加载用户设置时遇到错误”
  • ¥50 vue router 动态路由问题
  • ¥15 关于#.net#的问题:End Function
  • ¥15 无法import pycausal
  • ¥15 VS2022创建MVC framework提示:预安装的程序包具有对缺少的注册表值的引用
  • ¥15 weditor无法连接模拟器Local server not started, start with?
  • ¥20 6-3 String类定义
  • ¥15 嵌入式--定时器使用
  • ¥20 51单片机学习中的问题