如何标记点?
How to label points?
我尝试标记 70 个点(可以看作节点),这些点的坐标包含在一个有两列的矩阵中。在 labelize 中,我的意思是为每个人分配一个数字,例如获得一个包含三列的矩阵,其中前两列始终是坐标,第三列始终是标签
例如,我在文档中看到 labelnode
和 graph
,但我没有适合这些功能的 matlab 版本(我使用 R2015a)。 labelmatrix
或 bwlabel
将我的坐标矩阵转换为 1 的矩阵。
我该怎么办?
317 948
319 935
320 969
320 969
326 916
我不完全确定我是否解决了你的问题。据我了解,您只需在数据中添加一列唯一数字即可。如果我们说你的数据存储在矩阵 X
中,你可以这样做:
labels = 1:size(X,1); % generate a vector of integers from 1 to number of rows of X
X = [X, labels']; % concatenate the matrix X and the vector of labels
% X = [ 317 948 1
% 319 935 2
% 320 969 3
% 320 969 4
% 326 916 5
% .........]
如果您想要具有相同坐标的点的相同标签,您可以使用unique
生成这些标签:
[~, ~, labels] = unique(X, 'rows');
X = [X, labels];
% X = [ 317 948 1
% 319 935 2
% 320 969 3
% 320 969 3
% 326 916 4
% .........]
有很多方法可以做到这一点。
只需使用带有数字标签的数字数组。您可以轻松地将其附加到现有的 table.
arr(:,3) = labels;
您可以使用元胞数组,1 和 2 将是数字,3 将是标签的字符串。
arrWL = cell(size(arr,1), 3);
arrWL{:,1:2} = arr;
arrWL{:,3} = labels;
您也可以使用table
来标记行和列。
X = arr(:,1);
Y = arr(:,2);
arrWL = table(X, Y, 'RowNames', labels);
将数据和标签放在一起作为元胞数组(包含 2 个元素)中的单独条目。
arrWL = {arr, labels};
如果其中 none 是 suitable,我可能会想到一些其他的选择。
现在,要为标签生成唯一编号,请使用:
[~,~,positions] = unique(arr, 'rows', 'stable');
% I prefer stable so the first point gets index 1 etc.
我尝试标记 70 个点(可以看作节点),这些点的坐标包含在一个有两列的矩阵中。在 labelize 中,我的意思是为每个人分配一个数字,例如获得一个包含三列的矩阵,其中前两列始终是坐标,第三列始终是标签
例如,我在文档中看到 labelnode
和 graph
,但我没有适合这些功能的 matlab 版本(我使用 R2015a)。 labelmatrix
或 bwlabel
将我的坐标矩阵转换为 1 的矩阵。
我该怎么办?
317 948
319 935
320 969
320 969
326 916
我不完全确定我是否解决了你的问题。据我了解,您只需在数据中添加一列唯一数字即可。如果我们说你的数据存储在矩阵 X
中,你可以这样做:
labels = 1:size(X,1); % generate a vector of integers from 1 to number of rows of X
X = [X, labels']; % concatenate the matrix X and the vector of labels
% X = [ 317 948 1
% 319 935 2
% 320 969 3
% 320 969 4
% 326 916 5
% .........]
如果您想要具有相同坐标的点的相同标签,您可以使用unique
生成这些标签:
[~, ~, labels] = unique(X, 'rows');
X = [X, labels];
% X = [ 317 948 1
% 319 935 2
% 320 969 3
% 320 969 3
% 326 916 4
% .........]
有很多方法可以做到这一点。
只需使用带有数字标签的数字数组。您可以轻松地将其附加到现有的 table.
arr(:,3) = labels;
您可以使用元胞数组,1 和 2 将是数字,3 将是标签的字符串。
arrWL = cell(size(arr,1), 3); arrWL{:,1:2} = arr; arrWL{:,3} = labels;
您也可以使用
table
来标记行和列。X = arr(:,1); Y = arr(:,2); arrWL = table(X, Y, 'RowNames', labels);
将数据和标签放在一起作为元胞数组(包含 2 个元素)中的单独条目。
arrWL = {arr, labels};
如果其中 none 是 suitable,我可能会想到一些其他的选择。
现在,要为标签生成唯一编号,请使用:
[~,~,positions] = unique(arr, 'rows', 'stable');
% I prefer stable so the first point gets index 1 etc.