他我正致力于使用三家制造商的涡轮机特定参数对风力涡轮机进行建模 我的代码是
Site_speed = xlsread('test.xlsx','Sheet1'); % Wind speed data recorded on site
air_density = xlsread('test.xlsx','Sheet2'); % Air density data recorded on site
Turbine_parameters = xlsread('windparameters.xlsx'); % Wind turbine unit database
Ref_wind_speed = Turbine_parameters(:,1); % Wind speed from wind turbine unit database file Turbine_parameters
Ref_output = Turbine_parameters(:,2:4); % Power output from wind turbine unit database file Turbine_parameters
Density_correct = (air_density./air_density_ref);
for K = 1 : size(Ref_output, 2)
power_out(:,:,K) = Density_correct.* interp1( Ref_wind_speed, Ref_output(:,K), Site_speed, 'nearest');
% xlswrite('this_file2.xlsx', power_out(:,:,1), 'sheet1');
% xlswrite('this_file2.xlsx', power_out(:,:,2), 'sheet2');
% xlswrite('this_file2.xlsx', power_out(:,:,3), 'sheet3');
%% WIND TURBINE FINANCIAL ANALYSIS + OPERATIONAL EMISSIONS
Array_supply(:,:,K) = (1-Losses) .* power_out(:,:,K) .* Turbines;
Total_array(:,:,K) = sum(Array_supply(:));
Array_OM_cost(:,:,K) = sum(sum(Total_array(:,:,K) * Wind_OM));
% % Grid connected system with internal load
end
for K = 1 : size(Array_supply,3)
Demand = xlsread('demandtest.xlsx');
if Demand >= Array_supply(:,:,K)
Grid(:,:,K) = Demand - Array_supply(:,:,K)
Income(:,:,K)= (Array_supply(:,:,K)*FIT_wind) + Array_supply(:,:,K)*Grid_cost);
Expences(:,:,K) = (Array_OM_cost(:,:,K)) + sum(sum((Grid(:,:,K)*Grid_cost)));
Profit(:,:,K) = sum(sum(Income(:,:,K))) - sum(sum(Expences(:,:,K)));
else
Income(:,:,K) = (Demand*FIT_wind) + (Demand*Xe_wind)+(Demand*Grid_cost);
Expences(:,:,K) = Array_OM_cost(:,:,K);
Profit(:,:,K) = sum(sum(Income(:,:,K))) - sum(sum(Expences(:,:,K)));
end
end
我已经展示了上面的所有代码,但我认为错误始于这一行 - 对于K = 1:size(Array_supply,3) 程序运行时得到的结果是一组三个矩阵(如预期的那样),前两个矩阵仅填充零(不正确)。 网格,收入和费用也应该是365x 24矩阵(需求和数组供应也是如此) 当我尝试运行网格(:,:,K)时,出现错误,说Matlab无法找到它!
有谁知道我哪里出错了? 感谢
答案 0 :(得分:1)
首先,Matlab中最好的做法是预先分配你的数组。如果你知道Grid,Income,Expenses和Profit都是365x24x3矩阵,那么你应该把它放在循环之前,并对其他变量做同样的事情。
Grid=zeros(365,24,3);
至于你的问题,你似乎没有正确计算这个问题。在Demand=xlsread(...)
语句后设置一个断点。需求看起来是否正确?需求必须是单个变量,如果它是一个矩阵,那么这就是你的问题。如果它是一个矩阵,你需要遍历每个变量。有更多优雅的解决方案涉及逻辑掩码,如果您愿意,可随意查找概念。我建议至少在目前,你只需循环整个需求循环。
另外,我认为您没有正确使用您的利润表。它只存储每个循环的单个变量,但是你将它存储在整个矩阵中......看起来Profit就像3x1矩阵一样,引用它像Profit(f)而不是Profit(:, :中,f)
哦,非常小的一点,这是费用,而不是费用......