【问题标题】:Sum and if cycle MatlabSum和if循环Matlab
【发布时间】:2014-04-09 05:18:41
【问题描述】:

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

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的最后一个值。

【问题讨论】:

  • 只是一个问题,你还没有创建变量sum,是吗?

标签: matlab sum


【解决方案1】:

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

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

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

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

【讨论】:

  • 感谢您对第二个问题的帮助,我使用 custo_compra=semana1(1,13:32).*semana1(2,13:32) 代替。
【解决方案2】:

第一个问题:

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

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

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

第二个问题:

我无法回应。出于同样的原因,您没有得到矩阵(您仅使用 1 个值)。另外我不知道semana1 是不是一个矩阵,你对矩阵的哪一部分感兴趣。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多