Info
此问题已关闭。 请重新打开它进行编辑或回答。
Changing empty array for peak width to zero
1 次查看(过去 30 天)
显示 更早的评论
So I have a matrix full of 25 iterations of a code (ends up as 75x25). For each iteration I wanted to calculate the width of the peak thats created, and I did this by using findpeaks. The problem is that my resulting width vector only includes 10 widths, and I'm assuming its because the other iterations do not have a peak, so the width is an empty array []. Is there a way I can insert zeros when they occur?
This is what I've tried
for i=1:25
[pks1(i,1), loc1(i,1), width1(i,1), prom1(i,1)]= findpeaks(XmRNA(:,i),t);
for i=1:length(width1)
if isempty(width1(i))
width1(i)= 0
end
end
end
I tried using is empty but my resulting width vector doesnt include the empty arrays ([]) so it doesnt work. (To clarify my width1 vector is 10 numbers, so there are no empty arrays to change to zero).
Any help is welcome!
0 个评论
回答(1 个)
Sindar
2020-8-18
编辑:Sindar
2020-8-18
% preallocate default values
pks1 = nan(25,1);
loc1 = nan(25,1);
width1 = zeros(25,1);
prom1 = nan(25,1);
for i=1:25
[tmp_pk, tmp_loc, tmp_width, tmp_prom]= findpeaks(XmRNA(:,i),t);
% if peak is found, update values with the *first* peak
if ~isempty(pks)
pks(i) = tmp_pk(1);
loc1(i) = tmp_loc(1);
width1(i) = tmp_width(1);
prom1(i) = tmp_prom(1);
end
end
you should think about whether you want the first peak or a different one (e.g., the most prominent peak)
Note: may be worth checking speed of parfor
0 个评论
此问题已关闭。
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!