假设我有一系列n
个数字
e=[5,4,45,63,22,22,1,12,3,2,2,16,14,14,16,17,1,19,21,15,32,32,27,27,43,41,7,8,13,23,23]
然后是第一个10
数字,即
[5,4,45,63,22,22,1,12,3,2]
计算1
到5
以外的数字,然后除以10
,即
[45,63,22,22,12]
总5
,因此结果应为5/10
,现在为20
个数字,即。
[5,4,45,63,22,22,1,12,3,2,2,16,14,14,16,17,1,19,21,15]
然后
[45,63,22,22,12,16,14,14,16,17,19,21,15]
总计= 13
,13/20
,10
,20
,30
,......最多n
个数字
然后用x
轴点0
10
20
30
... n
和y
轴与{{ 1}},5/10
,...如何做到这一点
我试过这个
13/20
但它显示不同。
答案 0 :(得分:2)
试试这个
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<p><b>Note:</b> Internet Explorer does not support the resize property.</p>
<div class="foo">
Drag the corner(s) around.
</div>
此处e= [5,4,45,63,22,22,1,12,3,2,2,16,14,14,16,17,1,19,21,15,32,32,27,27,43,41,7,8,13,23,23];
bins = 10:10:numel(e);
counts = NaN(1,numel(bins)); %// pre-allocation. I'm pre-allocating with NaN here instead of zeros because 0 is a valid result for an element of counts and thus could make us miss errors should something go wrong
for k = 1:numel(bins)
counts(k) = sum(e(1:bins(k)) > 5)/bins(k);
end
plot(bins, counts) %// or you might prefer bar(bins, counts)
将是循环第一次迭代中e(1:bins(k))
的第一个10
元素,第二次循环中的第一个e
,依此类推。 20
只计算有多少元素大于sum(... > 10)
。要了解其工作原理,请考虑5
。现在x = [3 4 5 6 7 8 5 1 2]
将返回逻辑数组x > 5
,因此[0 0 0 1 1 1 0 0 0]
与sum(x>10)
相同,即sum([0 0 0 1 1 1 0 0 0])
,即3
中的元素数大于x
。现在你只需要在每次迭代时将这个计数存储在5
的不同元素中,因此我们有counts
而不是counts(k) = ...
作为后者(即你的代码如何拥有它)只是覆盖{ {1}}在每次迭代时使用标量计数,而不是创建在每次迭代时记录每个计数的向量。
在MATLAB中,您通常可以取消循环,在这种情况下也可以这样做:
counts = ...
答案 1 :(得分:1)
希望,这可以帮到你
n=30 % this because of the 'e' size
Lim = 5 % your limit
Steps = 10 %
xValues = Steps:Steps:n
PlotSeries = NaN(size(e,2)/Steps,2)
for x = 1:1:size(e,2)/Steps
PlotSeries(x,:) = [xValues(x),size(e(e(1:xValues(x))>Lim),2)/xValues(x)]
end
plot(PlotSeries)