在C中计算欧几里德距离矩阵

2024-02-26

我想将用 MATLAB 编写的代码转换为 C:

matrix = [1 2 3; 4 5 6; 7 8 10]
dis=zeros(9);
for i=1:3
    for j=1:3
        dis(i,j)=sqrt(sum (abs((matrix(i,:)-matrix(j,:))))^2);
    end
end

输出如下:

    0    9   19
    9    0   10
   19   10    0

这是我在 C 中想到的:

#include <stdio.h>
#include <math.h>

int main() {

  double distance[3][3] = {0};
  double myArray[3][3] = { {1, 2, 3}, {4 , 5, 6}, {7, 8, 9} };

  int i, j;
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {

      distance[i][j] = sqrt(pow(myArray[i] - myArray[j], 2));

    }
  }

  for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {

      printf("%f ", distance[i][j]);
      if (j == 2) {
        printf("\n");
      }
    }
  }
  return 0;
}

但它显示一个空数组:

0 0 0                                                     
0 0 0                                                                                       
0 0 0

我的错误在哪里?


您的代码存在一些问题。

  1. 我认为,你的矩阵输入数据应该是matrix = [1 2 3; 4 5 6; 7 8 10],但是输入数据在您的代码中有所不同(观察最后一个元素;10在作业中变成9在你的代码中)。

  2. 我认为这些点是空间的(如 x、y 和 z 坐标)。确实如此,你需要第三个循环;首先对于外循环中的点point_1 = { 1, 2, 3 }, ...等等,第二个是内循环中的点... point_2 = { 4, 5, 6 }...等等,第三个用于三个坐标x = 1, y = 2, z = 3.

  3. sqrt返回一个双精度值。你最好将返回值转换为 int 像(int).

  4. 正如@sahwahn 指出的那样;您计算距离但从未保存该值。

您的嵌套循环结构可能如下所示:

for (i = 0; i < 3; i++) {
    for (j = 0; j < 3; j++) {
        int temp = 0;

        for (k = 0; k < 3; k++) {
            temp += (int)sqrt(pow(myArray[i][k] - myArray[j][k], 2));
        }

        distance[i][j] = temp;
    }
}

顺便提一句;空间坐标中的真实距离计算公式为:square root of (the sum of the squares of (the coordinate difference)), not the sum of (square root of (the squares of (the coordinate difference))).

因为我不确定作业,所以我坚持问题中给出的信息。从逻辑上讲,对于真正的距离计算,您的内循环需要是:

double temp = 0.0f;

for (k = 0; k < 3; k++) {
    temp += pow(myArray[i][k] - myArray[j][k], 2);
}

distance[i][j] = (int)sqrt(temp);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在C中计算欧几里德距离矩阵 的相关文章

  • 使用 mono/nunit-console/4 在 Mac OS X 控制台上运行测试

    我安装了 Max OS X 10 11 1 上面装有 Xamarin 我编写了简单的测试类 只是为了测试在 Mac OS X 和 Ubuntu 上运行 Nunit 测试 该类实际上有一个返回字符串的方法 using System names
  • 如何在 DataColumn.Expression 中使用 IF/ELSE 或 CASE?

    我有一个包含 1 列的表 状态 我想添加另一列名为 Action 的列 其值如下 如果 Status Yes 则 Action Go 否则 Action Stop 我使用以下代码添加到 操作 列中 但它不起作用 myDataTable Co
  • 如何保证对象只有一个线程

    我有以下代码 class Service public void start creates thread which creates window and goes to message loop void stop sends WM C
  • 何时使用 =default 使析构函数默认?

    尽管对构造函数使用 default 对我来说很清楚 即强制编译器在其他构造函数存在时创建默认构造函数 但我仍然无法理解这两种类型的析构函数之间的区别 那些使用 default 的 那些没有显式定义并由编译器自动生成的 我唯一想到的是 gro
  • FileStream 构造函数和默认缓冲区大小

    我们有一个使用 NET 4 用 C 编写的日志记录类 我想添加一个构造函数参数 该参数可以选择设置文件选项 WriteThrough http msdn microsoft com en us library system io fileo
  • EF Core 通过完全替换断开集合导航属性的更新

    使用 EF Core 5 0 我有一个 SPA 页面 可以加载Group实体及其集合Employee来自 API 的实体 var groupToUpdate await context Groups Include g gt g Emplo
  • 信号处理程序有单独的堆栈吗?

    信号处理程序是否有单独的堆栈 就像每个线程都有单独的堆栈一样 这是在 Linux C 环境中 来自 Linux 手册页signal 7 http kernel org doc man pages online pages man7 sign
  • 单例模式和 std::unique_ptr

    std unique ptr唯一地控制它指向的对象 因此不使用引用计数 单例确保利用引用计数只能创建一个对象 那么会std unique ptr与单例执行相同 单例确保只有一个实例属于一种类型 A unique ptr确保只有一个智能指针到
  • C# 构建一个 webservice 方法,它接受 POST 方法,如 HttpWebRequest 方法

    我需要一个接受 POST 方法的 Web 服务 访问我的服务器正在使用 POST 方法 它向我发送了一个 xml 我应该用一些 xml 进行响应 另一方面 当我访问他时 我已经使用 HttpWebRequest 类进行了管理 并且工作正常
  • 如何通过 JsonConvert.DeserializeObject 在动态 JSON 中使用 null 条件运算符

    我正在使用 Newtonsoft 反序列化已知的 JSON 对象并从中检索一些值 如果存在 关键在于对象结构可能会不断变化 因此我使用动态来遍历结构并检索值 由于对象结构不断变化 我使用 null 条件运算符来遍历 JSON 代码看起来像这
  • 如何在c的case语句中使用省略号?

    CASE expr no commas ELLIPSIS expr no commas 我在c的语法规则中看到了这样的规则 但是当我尝试重现它时 int test float i switch i case 1 3 printf hi 它失
  • 我可以让 ungetc 取消阻止阻塞的 fgetc 调用吗?

    我想在收到 SIGUSR1 后使用 ungetc 将 A 字符重新填充到标准输入中 想象一下我有充分的理由这样做 调用 foo 时 stdin 中的阻塞读取不会被收到信号时的 ungetc 调用中断 虽然我没想到它会按原样工作 但我想知道是
  • 使用restsharp序列化对象并将其传递给WebApi而不是序列化列表

    我有一个看起来像的视图模型 public class StoreItemViewModel public Guid ItemId get set public List
  • cout 和字符串连接

    我刚刚复习了我的 C 我尝试这样做 include
  • 跨多个域的 ASP.NET 会话

    是否有合适的 NET 解决方案来在多个域上提供持久服务器会话 即 如果该网站的用户在 www site1 com 下登录 他们也将在 www site2 com 下登录 安全是我们正在开发的程序的一个问题 Thanks 它是否需要在会话中
  • 更改 Windows Phone 系统托盘颜色

    有没有办法将 Windows Phone 上的系统托盘颜色从黑色更改为白色 我的应用程序有白色背景 所以我希望系统托盘也是白色的 您可以在页面 XAML 中执行此操作
  • 在简单注入器中解析具有自定义参数的类

    我正在使用以下命令创建 WPF MVVM 应用程序简易注射器作为 DI 容器 现在 当我尝试从简单注入器解析视图时遇到一些问题 因为我需要在构造时将参数传递到构造函数中 而不是在将视图注册到容器时 因此这不是适用的 简单注入器将值传递到构造
  • C++0x中disable_if在哪里?

    Boost 两者都有enable if and disable if 但 C 0x 似乎缺少后者 为什么它被排除在外 C 0x 中是否有元编程工具允许我构建disable if按照enable if 哦 我刚刚注意到std enable i
  • 使用 QtWebEngine 将 C++ 对象暴露给 Qt 中的 Javascript

    使用 QtWebkit 可以通过以下方式将 C 对象公开给 JavascriptQWebFrame addToJavaScriptWindowObject如中所述https stackoverflow com a 20685002 5959
  • Java 和/C++ 在多线程方面的差异

    我读过一些提示 多线程实现很大程度上取决于您正在使用的目标操作系统 操作系统最终提供了多线程能力 比如Linux有POSIX标准实现 而windows32有另一种方式 但我想知道编程语言水平的主要不同 C似乎为同步提供了更多选择 例如互斥锁

随机推荐

  • C 标准数据结构库? [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找 C 语言 Windows 平台 中经过测试和测试的标准库 它实现了堆栈 队列 树等数据结构
  • 错误:“函数”对象不可下标

    我正在做我的 python 作业 但是当我想测试上面的情况时出现错误 这是我的代码 def evalTerm env t if type t Node for label in t children t label if label Num
  • 安全共享的 Google 日历

    我正在开发一个小型网站 它有一个非常简单的想法 有两组用户 办公室和工人 都必须登录才能访问该网站 该网站是使用Zend框架构建的 问题 我想要一个所有用户都可以访问的日历 办公室工作人员能够编辑日历 而工作人员只能查看日历 我真的很想使用
  • 如何利用MVC中的常用图像资源

    我有几个 ASP NET MVC3 和 4 网站 所有站点都使用独立于库的相同资源 资源是 resx 文件 我想在这些网站内的 html 中使用这些资源中的图像 我之前没有使用过 resx 文件 所以不确定使用它们的好方法是什么 我认为我可
  • 将新节点添加到力导向布局

    关于 Stack Overflow 的第一个问题 请耐心等待 我是 d3 js 的新手 但一直对其他人能够用它完成的事情感到惊讶 并且几乎同样对我自己用它取得的进展如此之少感到惊讶 显然我没有摸到什么 所以我希望这里善良的灵魂可以向我展示光
  • 使用ajax通过单击按钮运行php脚本

    我是一个业余爱好者 对 html javascript php 的了解有限 我设置了一台 Raspberry Pi 微型计算机作为 Web 服务器 首先 我想通过网页上的按钮打开连接到 Pi 的 LED 我有以下有效代码 html 文件的名
  • 手动设置Flutter验证错误

    验证表单并将请求从 flutter 发送到服务器后端后 我想将服务器中的任何潜在错误消息设置为以原始表单显示 最好与验证错误完全相同 例如 Widget build BuildContext context TextFormField on
  • 指针访问和引用访问哪个更快?

    在下面的示例代码中 我分配了 struct Chunk 的一些实例 然后 在 for 循环中 我迭代内存块并使用指针或引用访问不同的实例 并为它们分配一些随机数据 但是哪个 for 循环执行得最快呢 据我所知 我认为引用循环将是最快的 因为
  • 清理 URL 以防止 Rails 中的 XSS

    在 Rails 应用程序中 用户可以创建事件并发布 URL 以链接到外部事件站点 如何清理网址以防止 XSS 链接 提前致谢 XSS 示例 rails 的清理方法无法预防该问题 url javascript alert XSS a href
  • .Net core & SynchronizationContext & Thread.SetData

    据我所知 AspNetCore没有 https blog stephencleary com 2017 03 aspnetcore synchronization context html SynchronizationContext 重新
  • C++0x 中的特殊成员函数

    维基百科文章关于特殊成员函数 http en wikipedia org wiki Special member functions不包含任何对移动构造函数和移动赋值运算符的引用 我想更新该条目 但我不确定 0x 标准的内容 这两个函数的规
  • 将 JSON 数据加载到 Bootstrap 模式中

    我想加载一个 JSON 文件 该文件在 Bootstrap Modal 内创建一个列表 我将其设置为如果您单击某人的图片 则会弹出模式 li class project span3 a class thumbnail img src img
  • 为什么

    我的公司正在构建一个网站 我们遇到了一些 JavaScript 库无法替换某些内容的问题 我们决定将 HTML 放入 W3C 验证器 它告诉我们拥有 div 标签内的 div
  • 异步 - 等待 - 预期线程

    我有以下代码 static void Main string args Run1 Run2 Wait static async Task DoAsyncWork await Task Delay 2000 static async Task
  • H2 控制台在 H2 数据库中抛出错误 webAllowOthers

    我正在使用heroku来部署我的应用程序 当我尝试使用heroku加载我的h2控制台时 它抛出一个错误 H2 控制台 抱歉 此服务器上禁用远程连接 webAllowOthers 我在 application properties 文件中使用
  • 防止 Web 应用程序升级时浏览器缓存

    我有一个非常麻烦的问题 目前还没有找到好的解决方案 我允许浏览器缓存所有应用程序静态文件 JS CSS 和图像 以提高性能 问题是 当我进行升级时 用户仍然使用缓存中的旧版本 这经常会破坏应用程序 并且每次都需要清除缓存才能解决问题 是否有
  • Python:Pandas - 按组删除第一行

    我有以下大型数据框 df 看起来像这样 ID date PRICE 1 10001 19920103 14 500 2 10001 19920106 14 500 3 10001 19920107 14 500 4 10002 199201
  • Scala 括号语义

    将值附加到 MAP 时 为什么 Scala 需要额外的括号块才能使该语句起作用 不编译 vmap item getName item getString compiler output found String 但是 这确实可以编译 vma
  • 在不使用内容辅助输入整行时,Eclipse 在光标前插入分号

    这种行为让我抓狂 我输入以下内容 fileName append c get Calendar HOUR OF DAY 现在 当我输入内容时 会弹出内容辅助 我没有从内容辅助中选择 HOUR OF DAY 也没有按 Enter 键自动填写
  • 在C中计算欧几里德距离矩阵

    我想将用 MATLAB 编写的代码转换为 C matrix 1 2 3 4 5 6 7 8 10 dis zeros 9 for i 1 3 for j 1 3 dis i j sqrt sum abs matrix i matrix j