How to repeat elements of array in MATLAB

3 次查看(过去 30 天)
hello everyone i hope you are doing well
The data in the file is 250x1000, i have implemeneted the following code to delete 5% samples randomly from each row and replace zero at the end to complete the shape 1000 samples
Instead of zero, i want to repeat the array of each row from start complete the shape of 1000.
for example
in row 150 i have a data like data
[200 400 800 1000 800 200 400 ......]
When the below code run it remove 50 samples (950 samples remaining) and add 50 zeros (after 950) at the end of the row.
But i want to repeat the the row from start like [200 400 800 ....] will be added at the end of the row depend on the samples removes
How can i do it ?
dataset=load('datasetvalue').dataset;
[M,N] = size(dataset) ;
percentageMP=5;
size_MP=round(percentageMP/100*N);
Discards=nan(M,size_MP);
for i=1:M
row=dataset(i,:);
discard=randperm(N,size_MP);
row(discard)=[];
row(:,end+1:N)=0;
dataset(i,:)=row;
Discards(i,:)=discard;
end
Discards=sort(Discards,2);
  2 个评论
Davide Masiello
Davide Masiello 2022-3-10
Do you want to replace the zeros with the first values in the row before or after you have randomly deleted 5% of the elements in it?
Med Future
Med Future 2022-3-10
编辑:Med Future 2022-3-10
@Davide Masiello Yeah, i want the first values after deleteing the elements

请先登录,再进行评论。

采纳的回答

Jan
Jan 2022-3-10
Replace:
row(:,end+1:N)=0;
by
row(:,end+1:N) = row(1:size_MP);

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Matrix Indexing 的更多信息

产品


版本

R2021b

Translated by