如何在Matlab中进行以下操作?

时间:2016-05-12 13:12:02

标签: matlab sequence matlab-figure

假设我有一系列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] 

计算15以外的数字,然后除以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]

总计= 1313/20102030,......最多n个数字 然后用x轴点0 10 20 30 ... ny轴与{{ 1}},5/10,...如何做到这一点

我试过这个

13/20

但它显示不同。

2 个答案:

答案 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)