将fortran代码转换为matlab

时间:2015-11-11 03:31:13

标签: matlab fortran

如何将以下代码转换为matlab?我对goto声明感到困惑。

do 57 i=1,10
        statement 1
        if(k .eq. nx) then
          statement 2
          go to 58
        end if
 57   continue
      statement 3
 58   continue

2 个答案:

答案 0 :(得分:0)

这个Fortran Snippet的代码味道非常糟糕。

但这里有一些事情:

true这里似乎是一个变量。 Fortran中true的正确值是.TRUE.(或.true.)。假设该变量始终为.TRUE.,则可以非常轻松地重写代码:

statement 1
statement 2

就是这样。您的代码会立即跳出循环并超过statement 3,因此每个语句只会执行一次。

但假设true是一个必须在循环的每次迭代中重新计算的变量或表达式,这是一种更好的方法:

do i = 1, 10
    statement 1
    if (true) exit
end do
if (true) then
    statement 2
else
    statement 3
end if

现在,这仍假设true是一个静态表达式,即它不会在调用之间改变它的值。

答案 1 :(得分:0)

使用GOTO命令不被认为是一个很好的程序编程。 请改用以下程序:

i=1;
t=true;
while (i<=10)&&t
  statement1;
  t=k~=nx;
  i=i+1;
end

if t
  statement2;
else
  statement3;
end