Sum和if循环Matlab

时间:2014-03-06 14:00:37

标签: matlab sum

我有两个问题,需要你的帮助。 这是我的代码;

for k=13:32
  for j=53:64
    if semana1(1,13)*Condicao_compra_energia >= semana1(1,53) & sum(semana1(1,k))< 800
      Custo_compra_semana1=semana1(1,k)*semana1(2,k);
      Total_Cost=sum(custo_compra_semana1);
      Potencia_comprada=sum(semana1,k);
      Sold =Potencia_comprada*semana1(1,53); 
      Profit = Sold-Total_Cost; 
    else ...

    end
  end

我需要设置条件,以查看semana1(1,13)semana1(1,32)之间的总和是否小于800.

但是当我把这个数字作为sum(semana1(1,k))时,我得不到这些数字的总和,我怎么能解决这个问题呢?

我的第二个问题是在我放

后使用if条件
Custo_compra_semana1 = semana1(1,k) * semana1(2,k); 
Total_Cost = sum(Custo_compra_semana1); 
Potencia_comprada=sum(semana1, k); 
Sold =Potencia_comprada*semana1(1,53); 
Profit = Sold-Total_Cost; 

我需要获取custo_compra_semana1的矩阵,而Total_Cost应该是此矩阵之和的总值,但我在custo_compra_semana1得到的不是矩阵和Total_Cost仅提供custo_compra_semana1的最后一个值。

2 个答案:

答案 0 :(得分:1)

第一个问题:

为了设置正确的条件,你应该这样做:

sum(semana1(1,13:32))< 800

使用k您只使用数组semana1中的1个数字。

第二个问题:

我无法回应。由于相同的原因,您没有获得矩阵(您使用的是onl 1值)。另外,我不知道semana1是否是矩阵,并且您对矩阵的哪个部分感兴趣。

答案 1 :(得分:1)

semana(1,k)是一个标量值,你应该指定一个范围

sum(semana1(1,13:32))< 800

要获得带有Custo_compra_semana1的矩阵,您需要乘以两个向量,而不是两个标量

      Custo_compra_semana1=semana1(1,13:32)'*semana1(2,13:32);