Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 如何每100个值查找一行的前10个值?_Matlab_Sorting_Matrix - Fatal编程技术网

Matlab 如何每100个值查找一行的前10个值?

Matlab 如何每100个值查找一行的前10个值?,matlab,sorting,matrix,Matlab,Sorting,Matrix,所以我有一个1 x 7000的矩阵,我想找到每100个“样本”值组的前10个值,并用零替换所有其他值 我有一个代码,用于查找整行的前10个值: [sortvals, sortidx] = sort(A,2,'descend'); B = zeros(size(A),classA)); for K = 1 : size(A,1) B(K,sortidx(K,1:10)) = sortvals(K,1:10); end 但是,我想不出如何为每100个值实现这一点,除了一种简单的方法,即拆分

所以我有一个1 x 7000的矩阵,我想找到每100个“样本”值组的前10个值,并用零替换所有其他值

我有一个代码,用于查找整行的前10个值:

[sortvals, sortidx] = sort(A,2,'descend');
B = zeros(size(A),classA));
for K = 1 : size(A,1)
    B(K,sortidx(K,1:10)) = sortvals(K,1:10);
end
但是,我想不出如何为每100个值实现这一点,除了一种简单的方法,即拆分、查找值,然后追加,但这似乎不必要的混乱。

a
到一个包含100行的矩阵中(并相应地调整列),然后应用来查找每列前10个元素的索引。将这些转换为
A
的线性索引,并提取这些索引处的元素

%Extract top 10 values in every 100 values
top = 10;   every = 100;
%Reshape into a 100*x matrix
tmp =  reshape(A, every, []);
%Find row subscripts of required max values
[~, ind] = maxk(tmp,top);
%Convert row subscripts to linear indices
LinIdx = (0:every:(size(tmp,2)-1)*every) + ind;
%Initialize a matrix with all zeros of the same size and class as that of A
B = zeros(size(A), classA);
%Insert the top values 
B(LinIdx) = A(LinIdx);
A
转换为包含100行的矩阵(并相应调整列),然后应用以查找每列前10个元素的索引。将这些转换为
A
的线性索引,并提取这些索引处的元素

%Extract top 10 values in every 100 values
top = 10;   every = 100;
%Reshape into a 100*x matrix
tmp =  reshape(A, every, []);
%Find row subscripts of required max values
[~, ind] = maxk(tmp,top);
%Convert row subscripts to linear indices
LinIdx = (0:every:(size(tmp,2)-1)*every) + ind;
%Initialize a matrix with all zeros of the same size and class as that of A
B = zeros(size(A), classA);
%Insert the top values 
B(LinIdx) = A(LinIdx);

矩阵ix 1x7000。你所说的每100个“样本”值组是什么意思?另外,如果
A
是1x7000,那么K=1:size(A,1)的
目的是什么?矩阵ix 1x7000。你所说的每100个“样本”值组是什么意思?另外,如果
A
是1x7000,那么对于K=1:size(A,1)
来说
的目的是什么?