【问题标题】:Produce points out of csv dataset in matlab在matlab中从csv数据集中产生点
【发布时间】:2015-06-01 04:07:53
【问题描述】:

我有一个这样的 csv 文件:

Title, Longitude, Latitude
Photo1, 77.94, 20.665
Photo2, 62.508, 36.548
Photo3, 39.64, 52.547
Photo4, 39.6435, 52.77
Photo5, 70.642, 20.547

经度和纬度是每张照片拍摄的坐标。现在,我需要从文件中生成点,然后用不同的算法对它们进行聚类。

我试过这个:

T = readtable('testdata.csv','Format','%s%f%f')

x = T(:, 2);
y = T(:, 3);

lon=[x,0];
lat=[0,y];

data = [lon lat];

在 scatter 函数中使用 lon, lat,但似乎我完全错了。如果有人可以帮助我,那就太好了。抱歉这个愚蠢的问题,但我对 matlab 完全陌生。

【问题讨论】:

  • 如果T 持有文件中的表格,那么data = T(2:end, 2:3) 不是您想要的吗?
  • 还有一件事 - lon = [x,0]; 应该会给你一个错误,因为 x 是一个列向量,x0 的尺寸不匹配。
  • 感谢您的帮助!我改变了 x = T(:, 2);和 y = T(:, 3);到 x = T{:, 2};和 y = T{:, 3};我的情节现在似乎一切正常。我知道 lon = [x,0];完全错误,但我最后一次尝试使用它,我只是删除了这两行。 data = T(2:end, 2:3) 是我想要的,但由于某种原因,当我在聚类函数中将数据作为参数传递时它不起作用。

标签: matlab csv


【解决方案1】:

scatter 函数需要两个向量作为点坐标。因此,我认为您需要的是:

scatter(x, y);

xy 在问题中的定义。

【讨论】:

  • 我已经改变了 scatter 函数,我的绘图现在是正确的,但是我需要计算这些点的内核距离,这就是为什么我需要数据数组 data = T(2:end, 2:3)如你所说。但是,当我在内核函数中将数据作为参数传递时,会出现错误。
  • @simpleman91 - 您应该使用使您遇到问题的确切行来更新您的问题(这个内核函数是什么以及如何称呼它)。目前,问题中没有足够的信息。
  • 当我们在做的时候 - 欢迎来到 SO 并确保您阅读了常见问题解答。
  • 对不起,你是对的。我没有更新问题,因为我认为导致错误的只是这部分代码以及我编写这些行的方式,这就是为什么我要求正确的编写方式。后来我才意识到真正的问题。我在其余代码中发现了错误并更正了它,现在可以了。非常感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 2015-03-05
  • 2012-04-22
  • 1970-01-01
  • 2018-12-18
  • 1970-01-01
  • 2023-03-19
  • 1970-01-01
  • 2012-09-16
相关资源
最近更新 更多