删除行或放置标记数据

时间:2012-05-12 12:04:51

标签: matlab

我正在运行排序算法。

我有一个整数矩阵,我知道它中的所有整数都小于1000 是删除行(使用x(10,:) = [])还是在行中的每个插槽中添加无效值(例如1001)更好?

我在这里考虑效率。

1 个答案:

答案 0 :(得分:1)

为了便于比较,只需运行tic / toc。

X = randn(1000);
time1 = 0;
for i= 1:100
    X = randn(1000);
    tic
    X(10,:) = [];
    a = toc;
    time1 = time1 +a;
end
time2 = 0;
for i= 1:100
    X = randn(1000);
    tic
    X(10,:) = 1001;
    a = toc;
    time2 = time2 +a;
end

disp ([time1 time2])
0.3882    0.0026

判决:插入值。我猜是因为删除一行可能与重新排列矩阵有关。只需确保在排序时,您的算法只触及“非法值”一次,否则您需要执行一些复杂的大O计算来解决您的问题