Find the length of a vector up to a certain value
5 次查看(过去 30 天)
显示 更早的评论
Hi!
I have a vector (SortN1250) which is 75558x1 with a range from 1:1000 and i want to extract the length of the vector at certain values (100:100:5000) and ad them to another vector. This is my code:
ProbdistPoredens(50,1)=zeros
for n=100:100:5000
ind = find(abs(SortB1250(:,1)<n));
lengthind=length(ind)
for i=1:50
ProbdistPoredens(i,1)=lengthind
end
end
ProbdistPoredens is however just filled with the number 75558 on all 50 rows. This number is only expeted to show at the very last row in the column.
Any suggestions would be greatly appriciated!
Regards,
2 个评论
采纳的回答
Image Analyst
2022-6-7
Explain in words what this means: (100:100:5000)
Do you want only elements that have values of 100, 200, 300, 400, ..., 4900, or 5000?
Is that what "at certain values" means? Or does it mean at certain indexes?
3 个评论
Image Analyst
2022-6-8
Try this:
% Create sample data.
SortB1250 = 1000 * rand(75558, 1);
ProbdistPoredens=zeros(50,1);
n = 100 : 100 : 5000
for k = 1 : length(n)
ind = find(SortB1250 < n(k));
ProbdistPoredens(k) = length(ind);
end
plot(ProbdistPoredens, 'b.-', 'lineWidth', 2)
grid on;
更多回答(1 个)
Simon Chan
2022-6-8
The inner for loop is not necessary and it overwrite itself for every 'n'.
You may modify the code as follows.
ProbdistPoredens(50,1)=zeros;
for n=100:100:5000
ind = find(abs(SortB1250(:,1)<n));
lengthind=length(ind);
ProbdistPoredens(n/100,1)=lengthind; % modify the index from i to n/100
end
Alternatively, you can use function histcounts to do the same thing.
[ProbdistPoredens,~] = histcounts(SortB1250,0:100:5000,'Normalization','cumcount') % Use function hiscounts
0 个评论
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!