Matlab 在另一个矩阵中提取满足阈值的数据

Matlab 在另一个矩阵中提取满足阈值的数据,matlab,netcdf,Matlab,Netcdf,我在Matlab中遇到了一些问题,这可能更像是一个方法论/逻辑问题 所以我有三个netCDF文件,我正在加载到三个单独的矩阵中。其中两个矩阵是两个不同实验的测试运行值(所有三个文件都是网格化的),另一个是两个实验之间数据的p值 我想创建一个新的netCDF文件,其中包含两个实验之间的差值,如果特定网格有一个pvalue,那么您正在做这3个命令将要做的事情:a=rand(5,5);b=逻辑(randi(2,[5])-1);a(b)=NaN。在我看来这是正确的(因为它正在做它应该做的事情)。我不知道

我在Matlab中遇到了一些问题,这可能更像是一个方法论/逻辑问题

所以我有三个netCDF文件,我正在加载到三个单独的矩阵中。其中两个矩阵是两个不同实验的测试运行值(所有三个文件都是网格化的),另一个是两个实验之间数据的p值


我想创建一个新的netCDF文件,其中包含两个实验之间的差值,如果特定网格有一个pvalue,那么您正在做这3个命令将要做的事情:
a=rand(5,5);b=逻辑(randi(2,[5])-1);a(b)=NaN。在我看来这是正确的(因为它正在做它应该做的事情)。我不知道它在你的问题中是否正确。好吧,那么我想这一定是我的出口方案或可视化软件的问题。我使用matlabs native轮廓,数值是正确的。当我在网格上下文中使用这些文件时,一切都会崩溃。谢谢你的帮助!您可以运行这3个命令,看看您正在做的事情是否已经完成。如果矩阵很大,则可能没有发现错误。无论何时调试,最好先使用较小的矩阵(如果您不了解问题所在)。我发现这与其说是我的逻辑,不如说是导出方案。这应该是一个简单的解决方案。对于将来寻求这一点的人——在从matlab导出netCDF时,使所有变量都是矩阵的倒数,例如,如果使用矩阵A,则导出为A'
%find the difference between experiments, averaged over the 3rd dimension
yr_diff = mean(mat_2012-mat_1980,3);
yr_diff(pvalue >= 0.05) = NaN;
final_grid = yr_diff;