How to replace zero with the values present in array
Show older comments
Hello Everyone, I hope you are doing well. I have an array named as Dataset. I have replace 0 in for those values which has histogram count less than 50 percent of maximum value.
Now in my new array Dataset Has some Values which are equal to 0; I want to replace 0 with the Values already present in the array.
For example the array consists of value
34.9609375000000
37.9882812500000
34.9609375000000
These Values should be in placed of 0's
How can i do it in Matlab
Batchdata=Dataset;
fig=figure; set(fig,'visible','off');
h=histogram(Batchdata,10000);
sumofbins=max(h.Values);
size_MP=round(50/100*sumofbins);
ValueofHistogram= h.Values;
Bindata=h.Data;
Binedges=h.BinEdges;
Binedges(end) = Inf;
deleted_data_idx = false(size(Bindata));
for i=1: length(ValueofHistogram)
if ValueofHistogram(i)<size_MP;
deleted_data_idx(Bindata >= Binedges(i) & Bindata < Binedges(i+1)) = true;
end
end
close(fig);
Dataset(deleted_data_idx,:)=0;
5 Comments
Matt J
on 26 Aug 2022
For example the array consists of value ... These Values should be in placed of 0's
Your example isn't actually an example. It doesn't show us a hypothetical starting Dataset nor the final transformed one.
Stephen john
on 26 Aug 2022
So, if
array=[34.9609375000000 37.9882812500000 34.9609375000000];
DataSet=[100 800 0 900];
then the result should be
newDataSet=[100 800 34.9609375000000 37.9882812500000 34.9609375000000 900];
I replace each zero with the entirety of array?
Stephen john
on 26 Aug 2022
Stephen john
on 26 Aug 2022
Answers (1)
array=[34.9609375000000
37.9882812500000
34.9609375000000];
Dataset(deleted_data_idx,:)=repmat(array,1,size(Dataset,2));
presuming
numel(array) == sum(deleted_data_idx)
10 Comments
Stephen john
on 26 Aug 2022
Stephen john
on 26 Aug 2022
dpb
on 26 Aug 2022
DataSet=[100 800 0 900 0 100 0 0];
N1=numel(DataSet);
DataSet=DataSet(find(DataSet));
N2=numel(DataSet);
>> DataSet=[DataSet DataSet(1:N1-N2)]
DataSet =
100 800 900 100 100 800 900 100
>>
Above works if N2 >= N1/2
If N2 < N1/2, will have to reproduce remainder DataSet ceil(N1/N2) times and then keep N1 terms. Will leave exact code as "exercise for student"...
dpb
on 26 Aug 2022
I have no klew what the first was intended to be, then...don't understand the specific problem trying to solve; too convoluted an explanation to try to delve into.
Stephen john
on 26 Aug 2022
dpb
on 26 Aug 2022
Which code is that? The last algorithm is general with the caveat noted that you've got to duplicate more than once to recreate the original length if you remove more than half the original elements.
Stephen john
on 27 Aug 2022
Stephen john
on 27 Aug 2022
dpb
on 27 Aug 2022
You're missing the point -- how to calculate that number of repetitions is where the hint and ceil() come into play.
Categories
Find more on Matrix Indexing in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!