格格巫� 2024-05-10 21:35 采纳率: 0%
浏览 8

现在我有两个tif文件,一个反演值tif,一个实测值tif,如何用Matlab来绘制散点图,计算R方和那几个误差(MAE,在arcmap中查看是“NoData”

现在我有两个tif文件,一个反演值tif,一个实测值tif,如何用Matlab来绘制散点图,计算R方和那几个误差(MAE,MRE,RMSE),tif其中还有一些无效值,在arcmap中查看是“NoData”

  • 写回答

2条回答 默认 最新

  • 笑面虎 2024-05-10 21:35
    关注

    以下内容由CHATGPT及笑面虎共同生成、有用望采纳:


    【您想要解决的问题】: 您想要解决的问题是如何使用Matlab处理两个地理空间数据文件(.tif格式),一个包含反演值,另一个包含实测值。您的目的是在Matlab中绘制这两个数据集的散点图,并计算它们之间的统计指标,包括决定系数(R方)、平均绝对误差(MAE)、平均相对误差(MRE)和均方根误差(RMSE)。同时,您需要处理数据中的无效值(在ArcMap中显示为“NoData”)。

    【问题出现原因】: 这个问题出现的原因是您需要对地理空间分析数据进行统计分析,并且需要使用Matlab来完成这一任务。在地理空间数据中,经常会有一些无效或缺失的值,这些值在分析时需要被特别处理,以避免影响最终的统计结果。

    【问题解决方案】: 为了解决这个问题,您可以按照以下步骤操作:

    1. 使用Matlab读取.tif文件。
    2. 处理无效值(“NoData”)。
    3. 绘制散点图。
    4. 计算R方、MAE、MRE和RMSE。

    【提供代码】: 以下是一段示例代码,展示了如何实现上述步骤:

    % 读取.tif文件
    retrievalTif = 'path_to_retrieval_tif.tif';
    measurementTif = 'path_to_measurement_tif.tif';
    
    % 读取数据,注意处理NoData值
    retrievalData = geotiffread(retrievalTif);
    measurementData = geotiffread(measurementTif);
    
    % 假设NoData值在.tif文件中被标记为NaN或某个特定的数值
    % 您可以根据实际情况替换NoDataValue
    NoDataValue = NaN;
    
    % 移除NoData值
    validIndices = ~isnan(retrievalData) & ~isnan(measurementData);
    retrievalData = retrievalData(validIndices);
    measurementData = measurementData(validIndices);
    
    % 绘制散点图
    scatter(measurementData, retrievalData);
    xlabel('实测值');
    ylabel('反演值');
    title('反演值与实测值的散点图');
    
    % 计算R方
    xy = polyfit(measurementData, retrievalData, 1);
    R2 = 1 - sum((retrievalData - polyval(xy, measurementData)).^2) / ...
                 sum((measurementData - mean(measurementData)).^2);
    
    % 计算MAE
    MAE = mean(abs(retrievalData - measurementData));
    
    % 计算MRE
    MRE = mean(abs((retrievalData - measurementData) ./ measurementData));
    
    % 计算RMSE
    RMSE = sqrt(mean((retrievalData - measurementData).^2));
    
    % 显示结果
    fprintf('R方: %f\n', R2);
    fprintf('MAE: %f\n', MAE);
    fprintf('MRE: %f\n', MRE);
    fprintf('RMSE: %f\n', RMSE);
    

    【代码运行方式】: 您需要有Matlab的安装环境,并且安装了Image Processing Toolbox,因为geotiffread函数包含在这个工具箱中。将上述代码复制到Matlab的脚本文件中,替换文件路径和NoData值的标记,然后运行脚本。

    【代码预期运行结果】: 代码将显示一个散点图,图中展示了实测值和反演值之间的关系。同时,Matlab的命令窗口将输出R方、MAE、MRE和RMSE的计算结果。

    【推荐相关链接】:

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 5月10日

悬赏问题

  • ¥15 clousx6整点报时指令怎么写
  • ¥30 远程帮我安装软件及库文件
  • ¥15 关于#自动化#的问题:如何通过电脑控制多相机同步拍照或摄影(相机或者摄影模组数量大于60),并将所有采集的照片或视频以一定编码规则存放至规定电脑文件夹内
  • ¥20 深信服vpn-2050这台设备如何配置才能成功联网?
  • ¥15 Arduino的wifi连接,如何关闭低功耗模式?
  • ¥15 Android studio 无法定位adb是什么问题?
  • ¥15 C#连接不上服务器,
  • ¥15 angular项目错误
  • ¥20 需要帮我远程操控一下,运行一下我的那个代码,我觉得我无能为力了
  • ¥20 有偿:在ubuntu上安装arduino以及其常用库文件。