【问题标题】:Random deleting of rows随机删除行
【发布时间】:2013-10-08 12:42:05
【问题描述】:

我需要选择W_tot_migl 矩阵的i 个随机行。现在我正在这样做:

[m, n] = size(W_tot_migl); % m data points, n dimensions
randomPoints = [];
for i=1:14250
     index = random('unid', m); % Pick the index at random.
     randomPoints(i,:) = W_tot_migl(index,:); % Add random point.
     W_tot_migl(index,:) = []; % Delete selected row.
     m = m-1;
end

有没有更快的方法,也许可以避免循环?

【问题讨论】:

    标签: matlab random matrix


    【解决方案1】:

    这是一个更 matlab 的方法:

    nr = 5; %How many do you want to pick
    
    n = size(W_tot_migl,1); 
    idx = randperm(n,nr);
    
    randomPoints = W_tot_migl(idx,:);
    W_tot_migl(idx,:) = [];
    

    请注意,当您一次选择它们时,您无需担心重复。如果这是从原始文件中删除它们的唯一原因,那么最后一行现在已经过时了。

    【讨论】:

    • 请注意,对于(不太)旧版本的 Matlab randperm 只承认第一个参数。在这种情况下,您可以使用:idx = randperm(n); idx = idx(1:nr);
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-02
    • 2018-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多