2

这是我的 MATLAB 代码:

[numeric, pics] = xlsread('matrix.xls');
[r,c] = size(pics);
done = r*c;

randvecall = randsample(done, done, true);
randvec = randvecall([1,diff(randvecall)]~=0);
currk = randvec(k);

本质上,它的作用是从 Microsoft Excel 电子表格中构建一组值。我想在数组中有重复,但不是连续重复,所以我添加了一行代码来删除它们。当我手动将值输入 randvecall 并运行上述代码时,它可以完美运行。但是,当我运行如上所示的代码时,出现以下错误:

??? Error using ==> horzcat
CAT arguments dimensions are not consistent.

Error in ==> testAS_randsample at 76
randvec = randvecall([1,diff(randvecall)]~=0);

为什么会这样?例如,这有效:

randvecall=[1 2 3 4 5 5 5 5 8 7 8 8];
randvec = randvecall([1,diff(randvecall)]~=0);
disp(randvec)

randvec = [1 2 3 4 5 8 7 8]

这正是我想要我的代码做的事情。但是为什么我的实际代码会给我 horzcat 错误消息?有人可以帮我吗?它一定与 randsample 构建 randvecall 数组的方式有关,但我不明白为什么这会给我那个错误信息?

4

1 回答 1

3

这似乎是如何randsample(n,k,true)工作的问题:它返回一个1xk向量,而您需要一个kx1向量。转randvecall置应该可以解决问题。

编辑:

让我为普通读者改写代码:

randvec = randvecall([1,diff(randvecall')]~=0);
于 2012-06-12T13:44:07.853 回答