extract a number N of equally spaced rows within a matrix
5 ビュー (過去 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 で Logical についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!