![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/177614/image.png)
Less than what number in the file ht could give 95%?
1 次查看(过去 30 天)
显示 更早的评论
Attached is column vector ht . I would want to find out below what number in ht would constitute 95% of ht ? For example, numbers in ht that are less than 25 constitute 43.78% of ht.
0 个评论
采纳的回答
Star Strider
2015-7-7
It took me a bit to understand what you wanted, but the result is actually straightforward:
D = load('ht.mat');
ht = D.ans;
ht95idx = fix(0.95*length(ht));
ht95 = ht(ht95idx)
figure(1)
plot(ht, '-r')
hold on
plot(ht95idx, ht95, 'bp')
hold off
grid
xlabel('index')
ylabel('ht')
text(ht95idx-150, ht95, sprintf('95%%‘ht’ at %5.1f \\rightarrow', ht95), 'HorizontalAlignment','right')
The plot of ‘ht’ as a function of its index:
![](https://www.mathworks.com/matlabcentral/answers/uploaded_files/177614/image.png)
更多回答(2 个)
bio lim
2015-7-7
编辑:bio lim
2015-7-7
First of all, I think it is bad idea to save your variable as ' ans ', so you should define a unique name. (I have renamed ' ans ' to ' data ' in your ht.mat file.)
This might be a clumsy code but should do the trick.
load('ht.mat')
x = zeros(size(data)); % Create vector of zeros
for i = 1 : length(data)
x(i) = sum(data==data(i)); % Counting the number of occurance
end
z = [data x]; % Matrix with first column as your initial data, and second as the number of occurence.
h = unique(z, 'rows'); % Only unique elements are selected.
sum = cumsum(h(:,2)); % 95% of 23880 is 22686
g = [h sum];
Thus less than 34.7 could give you 95% (More precisely 95.017%) . Hope it helps.
0 个评论
Sean de Wolski
2015-7-7
编辑:Sean de Wolski
2015-7-7
x = rand(100,1);
xp = prctile(x,[0,95]); % 2nd element
plot(sort(x))
line([1 100],xp([2 2]))
title(['95% is ' num2str(xp(2))])
0 个评论
另请参阅
产品
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!