【问题标题】:Vector Output from a FOR / IF loop Matlab来自 FOR / IF 循环的向量输出 Matlab
【发布时间】:2013-11-06 11:04:49
【问题描述】:

在下面的代码中,我试图获取每个值的所有 IF 结果的输出向量,从 0 到 0.25,步长为 0.001,单位为 O3ppm。

目前我只能得到一个输出BPlo=0.065,第二个IF输出。

我想看看; BPlo=[n, n1, n2....nx] 如果有意义的话。

任何帮助将不胜感激。

这部分代码是关于空气质量监测的荣誉年项目的较大脚本的一部分。

格雷姆。

O3ppm=[0:0.001:0.25];

for O3ppm=[]    
    if O3ppm < 0.065 
       BPlo = 0 
    elseif (O3ppm >= 0.065)&&(O3ppm < 0.085)
            BPlo = 0.065
            elseif (O3ppm >= 0.085)&&(O3ppm < 0.105)
                    BPlo = 0.085
                    elseif (O3ppm >= 0.105)&&(O3ppm < 0.125)
                            BPlo = 0.105
                            elseif (O3ppm >= 0.125)
                                    BPlo = 0.125
    end
end
BPlo

【问题讨论】:

    标签: matlab loops if-statement for-loop vector


    【解决方案1】:

    嗯,你只是将BPlo 设置为一个标量,所以它不会是一个向量。

    由于您已经编写了所有条件,因此在 for 循环之前使用

    初始化 BPlo
    BPlo=zeros(size(O3ppm));
    

    并将for O3ppm=[] 替换为

    for i=1:length(03ppm)
    

    然后将BPlo= 的任何实例替换为BPlo(i)=,并将O3ppm 的任何实例替换为O3ppm(i)

    我确信有一种更简洁的方法来处理所有条件,而不是使用一堆 elseif,但如果你的代码运行得足够快,那就没关系了。

    【讨论】:

      【解决方案2】:

      在代码的第一行中,您将 O3ppm 设置为一个包含 251 个值的向量:

      O3ppm=[0:0.001:0.25];
      

      然后在下一行将其设置为空向量

      for O3ppm=[]
      

      我还没有研究过你的其余代码,我认为你应该先解决第一个问题。目前还不完全清楚应该修复什么。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-12-22
        • 2015-07-19
        • 1970-01-01
        • 1970-01-01
        • 2014-05-16
        • 1970-01-01
        相关资源
        最近更新 更多