Matlab 如何标记点?

Matlab 如何标记点?,matlab,matrix,label,points,Matlab,Matrix,Label,Points,我尝试标记70个点(可以看作节点),它们的坐标包含在一个包含两列的矩阵中。在labelize中,我的意思是给每一个都加上一个数字,例如获得一个有三列的矩阵,其中前两列始终是坐标,第三列始终是标签 例如,我在doclabelnode和graph中看到了,但是我没有适合这些函数的matlab版本(我使用R2015a)。和labelmatrix或bwlab将我的坐标矩阵转换为1的矩阵 我该怎么办 317 948 319 935 320 969 320 969 326 916 我不能完全肯定我是否正确

我尝试标记70个点(可以看作节点),它们的坐标包含在一个包含两列的矩阵中。在labelize中,我的意思是给每一个都加上一个数字,例如获得一个有三列的矩阵,其中前两列始终是坐标,第三列始终是标签

例如,我在doc
labelnode
graph
中看到了,但是我没有适合这些函数的matlab版本(我使用R2015a)。和
labelmatrix
bwlab
将我的坐标矩阵转换为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
%       .........]

我不能完全肯定我是否正确地解决了你的问题。据我所知,您可以简单地向数据中添加一列唯一的数字。如果我们说您的数据存储在矩阵
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
%       .........]

有很多方法可以做到这一点

  • 只需使用带有数字标签的数字数组。您可以轻松地将其附加到现有表中

    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个元素)

  • 如果这些都不合适的话,我可能会想到其他一些选择

    现在,要生成标签的唯一编号,请使用:

    [~,~,positions] = unique(arr, 'rows', 'stable'); 
    % I prefer stable so the first point gets index 1 etc.
    

    有很多方法可以做到这一点

  • 只需使用带有数字标签的数字数组。您可以轻松地将其附加到现有表中

    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个元素)

  • 如果这些都不合适的话,我可能会想到其他一些选择

    现在,要生成标签的唯一编号,请使用:

    [~,~,positions] = unique(arr, 'rows', 'stable'); 
    % I prefer stable so the first point gets index 1 etc.
    

    你是说类似的东西吗?你能为你的问题添加一个代码示例吗(3点示例就足够了)?是的,我能:第一列是X,第二列是Y。我想为每行添加一个标签标签标签标签必须是字符串吗?还是数字可以?它们必须是独特的和不断增长的吗?你是说类似的东西吗?你能为你的问题添加一个代码示例吗(3点示例就足够了)?是的,我能:第一列是X,第二列是Y。我想为每行添加一个标签标签标签标签必须是字符串吗?还是数字可以?它们必须是唯一的且不断增加的吗?您的第二个解决方案是正确的解决方案,但使用X=[X,labels],而不是X=[X,labels']。谢谢:-啊,我错了!更正。您的第二个解决方案是正确的解决方案,但具有X=[X,labels],而不是X=[X,labels']。谢谢:-啊,我错了!更正。