【问题标题】:if else structure errorif else 结构错误
【发布时间】:2014-08-26 06:15:17
【问题描述】:

在这段代码中,我必须找到我们的距离值,并且我必须保存小于或等于 425 且大于零的值。我估计在这个范围内大约有 18000 个值,我必须将所有值与 x1、x2、y1、y2 值一起保存。但是这种结构给了我错误。 var3 (variable_3) 给出了正确的答案,它给出了整个距离矩阵,但是当我们保存小于 425 的值时,它会导致错误,请帮助我,谢谢。var4 矩阵给出了零值。

    var3 = zeros (258840,1);
    var4 = zeros (18000,5);
    m=1;
    for n = 1: 258840

         x1 = var1 (pairpoints(n,1), 1);          
         x2 = var1 (pairpoints(n,2), 1);
         y1 = var1 (pairpoints(n,1), 2);
         y2 = var1 (pairpoints(n,2), 2);

         % distance formula 
         d1=(((x2-x1)^2)+((y2-y1)^2))^(0.5);

         % save distance values in matrix named var3
         lin = sub2ind(size(var3),n,1);
         var3(lin) = d1;

            if 0<d1<426

              line = sub2ind(size(var4),m,1);
              var4(line) = x1;
              line = sub2ind(size(var4),m,2);
              var4(line) = x2;
              line = sub2ind(size(var4),m,3);
              var4(line) = y1;
              line = sub2ind(size(var4),m,4);
              var4(line) = y2;
              line = sub2ind(size(var4),m,5);
              var4(line) = d1;
              m=m+1;

             end
               end

【问题讨论】:

  • 错误信息是什么,错误在哪一行???

标签: matlab if-statement for-loop matrix


【解决方案1】:

首先:如果您提供的代码是可运行的,则更容易找到错误;那就是你需要提供var1pairpoints,或者至少解释一下它们是什么!

我仍然可能发现了您的问题。我在您的代码中看到的问题是if-statement:if 0&lt;d1&lt;426。当 Matlab 看到它时,它会将其解释为 if (0&lt;d1)&lt;426。现在0&lt;d1logical,也就是说,它始终不是 1 (true) 就是 0 (false)。那里的 if 语句要么是if 1&lt;426 要么是if 0&lt;426,所以无论你得到d1 的哪个值,你总是会输入if-branch。

如果您想测试d1 是否小于 426 并且大于 0,您应该编写如下内容:if (0&lt;d1)&amp;&amp;(d1&lt;426)

希望对你有帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-07-20
    • 2021-03-07
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    相关资源
    最近更新 更多