这是我的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数组的方式有关,但我无法弄清楚为什么会给我这个错误信息?
答案 0 :(得分:3)
这似乎是randsample(n,k,true)
工作原理的问题:它返回1xk
向量,而您需要kx1
向量。转置randvecall
应该可以解决问题。
修改强>
让我在一般读者的代码中重新措辞:
randvec = randvecall([1,diff(randvecall')]~=0);