extract a number N of equally spaced rows within a matrix
6 次查看(过去 30 天)
显示 更早的评论
HI! I have a number N and a matrix with 100 rows and 2 columns.
How can I recover N rows of the matrix so that they are as equidistant from each other as possible?
For example:
- with N = 10 I will have 10 rows (row 1, 11, 21, 31,...)
- with N = 7 I will have 7 rows (row 1, 15, 29,...) In this case the steps are like 100/7 = 14.28 = 14.
a=1:1:100;
a=a';
b=0.1:0.1:10;
b=b';
M=[a,b]; % example matrix
N=10; % number of rows
step = height(M)/N;
step = 14; % round down
v = 1:step:height(M);
M_new = M(v,:);
0 个评论
采纳的回答
Fangjun Jiang
2023-9-22
编辑:Fangjun Jiang
2023-9-22
M=repmat((1:100)',1,2);
N=7;
d=M(round(linspace(1,height(M),N)),:)
0 个评论
更多回答(1 个)
Dyuman Joshi
2023-9-22
编辑:Dyuman Joshi
2023-9-22
You are on the right course -
a=(1:1:100)';
b=(0.1:0.1:10)';
M=[a,b]; % example matrix
N=7; % number of rows
step = height(M)/N
%Use floor to round down to nearest integer less than or equal to step
step = floor(step) % round down
v = 1:step:height(M)
M_new = M(v,:)
8 个评论
Dyuman Joshi
2023-9-24
编辑:Dyuman Joshi
2023-9-24
"when height(M) is 100 and N is 10, it is hard to say which one is the right answer."
OP has specified what the expected outcome is and the logic behind it -
HI! I have a number N and a matrix with 100 rows and 2 columns.
How can I recover N rows of the matrix so that they are as equidistant from each other as possible?
For example:
- with N = 10 I will have 10 rows (row 1, 11, 21, 31,...)
- with N = 7 I will have 7 rows (row 1, 15, 29,...) In this case the steps are like 100/7 = 14.28 = 14.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Shifting and Sorting Matrices 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!