fig507HeatByLightScenarioSummary脚本

这段 MATLAB 代码用于生成 温室在不同光照和加热场景下的能量输入、光合有效辐射(PAR)、产量和能量效率 的图表,并绘制相应的柱状图。以下是代码的详细解释:


1. 注释部分

  • 代码开头的注释说明了这段代码的用途:生成能量输入、PAR、产量和能量效率的图表,用于绘制图5.7。

  • 该图来自于 David Katzin 的博士论文,论文研究了通过 LED 照明在温室中节能的方法。

  • 代码作者是 David Katzin,代码的最后更新日期是 2021 年 4 月。


2. 数据收集

  • outputFolder 定义了存储模拟输出文件的文件夹路径。

  • 如果路径末尾没有反斜杠(\),则自动添加。

  • files = dir(outputFolder); 获取文件夹中的所有文件。

  • files = files(3:end); 去掉前两个条目(...),保留实际文件。

  • heatByLightSummary 是一个空单元格数组,用于存储每个文件的能量输入、PAR、产量和能量效率数据。


3. 遍历文件并提取数据

  • 使用 for 循环遍历文件夹中的每个文件:

    • fileName = files(k).name; 获取当前文件名。

    • load([outputFolder fileName],'gl'); 加载文件中的数据到变量 gl

    • [lampIn, boilIn, hhIn, parSun, parLamps, yield, efficiency] = energyYieldAnalysis(gl); 调用自定义函数 energyYieldAnalysis,从 gl 数据中提取以下信息:

      • lampIn:灯具能量输入。

      • boilIn:锅炉能量输入。

      • hhIn:热回收电力输入。

      • parSun:来自太阳的光合有效辐射(PAR)。

      • parLamps:来自灯具的光合有效辐射(PAR)。

      • yield:产量。

      • efficiency:能量效率(单位产量的能量输入)。

    • 将文件名、能量输入、PAR、产量、能量效率和标签存储在 heatByLightSummary 中。

    • 使用 strrep 对标签进行格式化(例如,将 - 替换为空格,将 LL 替换为 L/L,将 HL 替换为 H/L)。


4. 重新排序数据

  • heatByLightSummary = heatByLightSummary([16 15 5 12 14 10 9 7 8 11 6 13 2 1 4 3],:); 对数据进行重新排序,以确保图表中的顺序符合预期。


5. 绘制图表

  • cc = lines(); 生成一组默认的 MATLAB 颜色。

  • labels=heatByLightSummary(:,9); 提取场景描述的标签。

图1:能量输入

  • 创建一个新的图形窗口。

  • 使用 bar 绘制堆叠柱状图,显示灯具能量输入、锅炉能量输入和热回收电力输入:

    • bar(cell2mat(heatByLightSummary(:,2:4)),'stacked');

    • 添加图例,说明每种能量输入的含义。

    • 设置 y 轴标签和范围:

      • ylabel('Energy input (MJ m^{-2} year^{-1})')

      • ylim([0 4000])

    • 设置 x 轴范围和标题:

      • xlim([0 17])

      • title('A')

图2:光合有效辐射(PAR)

  • 创建一个新的图形窗口。

  • 使用 bar 绘制堆叠柱状图,显示来自太阳和灯具的 PAR:

    • bar(cell2mat(heatByLightSummary(:,5:6)),'stacked');

    • 添加图例,说明每种 PAR 的来源。

    • 设置 y 轴标签和范围:

      • ylabel('PAR above the canopy (mol m^{-2} year^{-1})')

      • ylim([0 18000])

    • 设置 x 轴范围和标题:

      • xlim([0 17])

      • title('B')

图3:产量

  • 创建一个新的图形窗口。

  • 使用 bar 绘制柱状图,显示产量:

    • bar(cell2mat(heatByLightSummary(:,7)),'stacked');

    • 添加图例,说明柱状图的含义。

    • 设置 y 轴标签和范围:

      • ylabel('Yield (kg m^{-2} year^{-1})')

      • ylim([0 180])

    • 设置 x 轴刻度和标签:

      • xticks(1:16)

      • xticklabels(labels)

    • 设置 x 轴范围和标题:

      • xlim([0 17])

      • title('C')

图4:能量效率

  • 创建一个新的图形窗口。

  • 使用 bar 绘制柱状图,显示能量效率:

    • bar(cell2mat(heatByLightSummary(:,8)),'stacked');

    • 添加图例,说明柱状图的含义。

    • 设置 y 轴标签和范围:

      • ylabel('Energy input per product (MJ kg^{-1})')

      • ylim([0 25])

    • 设置 x 轴刻度和标签:

      • xticks(1:16)

      • xticklabels(labels)

    • 设置 x 轴范围和标题:

      • xlim([0 17])

      • title('D')


6. 代码的整体功能

  • 这段代码的主要功能是从多个模拟文件中提取能量输入、PAR、产量和能量效率数据,并绘制柱状图。

  • 通过这种方式,可以直观地比较不同场景下的能量使用、光照、产量和能量效率,帮助研究人员评估不同光照和加热策略的效果。


7. 代码的用途

  • 这段代码用于分析温室在不同光照和加热场景下的能量输入、PAR、产量和能量效率,帮助研究人员理解不同策略对温室生产的影响。

  • 通过观察这些指标的变化,可以评估温室的节能潜力和生产效率。


8. 可能的改进

  • 如果 energyYieldAnalysis 函数的实现不明确,可以进一步解释该函数的具体逻辑。

  • 可以添加更多的注释,解释每个步骤的目的,以便其他研究人员更容易理解和使用这段代码。

  • 可以将不同年份或不同场景的数据绘制在同一图中,以便更直观地比较它们的差异。


总结来说,这段代码是一个用于分析和可视化 温室在不同光照和加热场景下的能量输入、PAR、产量和能量效率 的工具,帮助研究人员更好地理解不同策略对温室生产的影响,并为节能策略的制定提供数据支持。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇