我有两个不同大小的矢量XYZ。我们可以将其称为Data1和Data2,其中:
Data1 = [1000 3:55 2000; ...
950 2200 4.5; ...
1050 2350 5.5; ...
1025 2500 6; ...
1075 2600 7; ...
1000 2700 8];
Data2 = [1000 2650 7.95; ...
1000 2750 8.16; ...
1000 2700 9; ...
1025 3000 10];
点之间的最小可接受差异是距离位置(X,Y)100米,深度(Z)为0.2。
在这种情况下,矢量之间的点将是P_Data1 = [1000 2700 8]和P_Data2 = [1000 2650 7.95],因为距离是可接受的,深度是最接近的。
有没有人知道可以做这种关联的功能来帮助我吗?我认为在Matalab中有一些问题的功能和高性能,因为我将为数千个点进行计算。
我目前正在使用嵌套循环,但性能非常糟糕,因为我计算所有距离,然后计算每个点的深度之间的所有差异并过滤矩阵。
简而言之,我想在两个不同大小的矢量之间找到深度较低和较低的点到定义的范围。
我感谢你的帮助!
答案 0 :(得分:1)
static string GetJavaInstallationPath()
{
string environmentPath = Environment.GetEnvironmentVariable("JAVA_HOME");
if (!string.IsNullOrEmpty(environmentPath))
{
return environmentPath;
}
const string JAVA_KEY = "SOFTWARE\\JavaSoft\\Java Runtime Environment\\";
var localKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry32);
using (var rk = localKey.OpenSubKey(JAVA_KEY))
{
if (rk != null)
{
string currentVersion = rk.GetValue("CurrentVersion").ToString();
using (var key = rk.OpenSubKey(currentVersion))
{
return key.GetValue("JavaHome").ToString();
}
}
}
localKey = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
using (var rk = localKey.OpenSubKey(JAVA_KEY))
{
if (rk != null)
{
string currentVersion = rk.GetValue("CurrentVersion").ToString();
using (var key = rk.OpenSubKey(currentVersion))
{
return key.GetValue("JavaHome").ToString();
}
}
}
return null;
}
所以这个程序应该按你的要求做,基本上,它首先计算Z列的最小值,你可以添加一个必须小于0.2的条件,我只是假设必须有一些值小于0.2。然后它试图查看是否可以满足第一个条件。虽然它使用循环进行搜索,但它实际上非常有效,因为一旦找到正确的值,它就会跳出循环。