matlab coordinates



我正在处理一个小项目,涉及在Matlab中绘制一些坐标。

下面是我的csv文件的一个示例。数据总计约160,000行:

31040、55725、0
30930、55725、1
30875、55630、3
30765、55630、0
30655、55630、5
30545、55630、0

前两列是x,y坐标,第三列是它们的值。数据是由rpg类游戏生成的。玩家在给定的坐标上做一些事情,然后他找到一些东西(0 <= 23)或不(Z = 0)。(Z = -1表示不确定,在这种情况下可以忽略)。因为玩家可以一遍又一遍地玩游戏,所以某些x,y坐标将具有相同或不同的值。

我要做的是做一个3D图显示一个坐标有多少次命中,命中的值是多少,有点像直方图?

我的取值范围是x: 30000 ~ 33000, Y: 55000 ~ 56000和z: -1 ~ 23。

我试着在一个包含5行的样本文件上使用mesh/meshgrid,它工作了。但是x y z坐标总是放错位置即使我试着重新排列列或者转置矩阵。

注意:当我用我的原始文件尝试代码时,我得到了"内存不足"错误。Matlab不能接受大量的数据吗?还是我的代码出了问题?

我尝试的简单代码如下所示:
x = test(:, 1);
y = test(:, 2);
z = test(:, 3);
zz = [x,y,z];
%R = meshgrid(zz);
%mesh(R);
mesh(zz)

提前感谢!

如何使用accumarray与自定义函数:

sel = test(:,3) > 0; % work only with z>0
x = test(sel,1) - min(test(sel,1)) + 1; % convert from x to legitimate indices
y = test(sel,2) - min(test(sel,2)) + 1;
a = accumarray( {x, y}, test(sel,3), [max(x) max(y)], @numel, [], true );
% plot using bar3
bar3( a, 1, 'detached' );

我会这样写:

[X,Y] = meshgrid(30000:33000,55000:56000);
Z=zeros(size(X));
Z(31040-30000+1,55725-55000+1) = 0;
Z(31930-30000+1,55725-55000+1) = -1;
Z(30875-30000+1,55630-55000+1) = 3;
mesh(Z)

注意:- size(X) == size(Y)

我要做的是做一个3D图显示一个坐标有多少次命中,命中的值是多少,有点像直方图?

您可以增加相应的Z(i,j)字段来计算坐标出现的频率。

相关内容

  • 没有找到相关文章

最新更新