对满足多个预定义标准的单元格对进行计算?

Calculations on cell pairs that meet multiple pre-defined criteria?

我的目标:根据每行中普遍存在的 5 种情况中的哪一种,在 if 语句之后进行计算。最终结果应该是 1 列,包括每行计算的结果。

到目前为止我尝试了什么:

CalcOutcome = zeros(554,1);
  for k=height(MomPF)
        if MomPF.L_sum4t<0 & MomPF.U_sum4t>0           
            % make calc for every row but end result should only be 1 column
            % with the calc outcomes
            CalcOutcome=(-1)*MomPF.L_sum4t{k}*0.5 + MomPF.U_sum4t{k}*0.5;
        elseif MomPF.L_sum4t<0 & MomPF.U_sum4t<0
            CalcOutcome=(-1)*MomPF.L_sum4t{k}*1;
        elseif MomPF.L_sum4t>0 & MomPF.U_sum4t>0
            CalcOutcome=MomPF.U_sum4t{k}*1;
        elseif MomPF.L_sum4t>0 & MomPF.U_sum4t<0
            CalcOutcome=MomPF.L_sum4t{k}*0.5 + (-1)*MomPF.U_sum4t{k}*0.5;
        elseif MomPF.L_sum4t==0 & MomPF.U_sum4t==0
            CalcOutcome=0          
        end
   end

Table:

我没有要测试的数据,但我会说你忘了索引!

CalcOutcome = zeros(554,1);
  for k=height(MomPF)
        if MomPF.L_sum4t(k)<0 & MomPF.U_sum4t(k)>0           
            % make calc for every row but end result should only be 1 column
            % with the calc outcomes
            CalcOutcome(k)=(-1)*MomPF.L_sum4t(k)*0.5 + MomPF.U_sum4t(k)*0.5;

        elseif MomPF.L_sum4t(k)<0 & MomPF.U_sum4t(k)<0
            CalcOutcome(k)=(-1)*MomPF.L_sum4t(k)*1;

        elseif MomPF.L_sum4t(k)>0 & MomPF.U_sum4t(k)>0
            CalcOutcome(k)=MomPF.U_sum4t(k)*1;

        elseif MomPF.L_sum4t>(k)0 & MomPF.U_sum4t(k)<0
            CalcOutcome(k)=MomPF.L_sum4t(k)*0.5 + (-1)*MomPF.U_sum4t(k)*0.5;

        elseif MomPF.L_sum4t(k)==0 & MomPF.U_sum4t(k)==0
            CalcOutcome(k)=0          
        end
   end

您正在循环 k,使用它。

正如其他人所提到的,索引似乎是问题所在。也就是说,您不需要循环——您应该能够使用 table 索引一次完成所有这些操作。例如,类似于:

idx = (MomPF.L_sum4t < 0) & (MomPF.U_sum4t > 0); CalcOutcome(idx) = -0.5*MomPF.L_sum4t(idx) + 0.5*MomPF.U_sum4t(idx);

然后冲洗并重复其他条件。