有人可以指向我在线/免费的MATLAB编译器/解释器或解释这个MATLAB代码中发生了什么?

Mik*_*ebb 18 matlab matlab-compiler

我提前为这个问题道歉.我不喜欢"解释此代码"的问题,但我找不到任何关于我的具体示例的文档.

背景
我的问题是这个.我试图将一些MATLAB代码翻译成C#,但我同时还要学习MATLAB.我不与任何知道MATLAB代码的人合作,我无法访问MATLAB,所以我无法测试任何代码,我找不到任何关于以下问题的文档.所以...

问题(S)

  1. 在某处可以使用免费的在线/桌面MATLAB编译器/解释器来测试MATLAB代码吗?

    ...要么...

  2. 是否有人可以解释以下代码段:

    someVar.member1=myValue1;
    someVar.member2=myValue2;
    if (myCondition)
        for i=1:myTotal
            someVar(i).member3=myValue3;
        end;
    end;
    
    Run Code Online (Sandbox Code Playgroud)

    这是否someVar成为一个数组?难道我失去了member1member2或者它救什么我已不知何故?

Jon*_*nas 17

回复:1 - 有优秀的Matlab文档,包括视频教程,可以帮助您理解Matlab.这比编译器更有用,因为您将了解代码的用途,以便您可以以适合C#的方式重新编写代码,而不是尝试复制Matlab优化的语法.

但是,为了测试运行Matlab代码,Octave提供了核心Matlab的大部分功能,但可能不支持工具箱功能(额外支付的Matlab附加模块).

回复:2 - 这是代码的作用

使用字段实例化结构数组 someVar(Matlab不需要事先声明变量)member; 将其分配给myValue1

someVar.member1=myValue1;
Run Code Online (Sandbox Code Playgroud)

创建一个附加字段member2,将其设置为myValue2

someVar.member2=myValue2;
Run Code Online (Sandbox Code Playgroud)

如果条件为真,则循环myTotal次数,并设置to member3的所有i元素的字段.因此,从1乘1结构阵列变为1乘结构阵列.保持原样,同时初始化为empty().someVarmyValue3someVarmyTotalsomeVar(1).member1myValue1someVar(i).member1[]

if (myCondition)
    for i=1:myTotal
        someVar(i).member3=myValue3;
    end;
end;
Run Code Online (Sandbox Code Playgroud)

/ aside:这个循环是定义结构的一种相当低效的方法.因此,您需要翻译的代码中可能没有太多Matlab优化的语法.

  • @MikeWebb:还有[Matlab博客](http://blogs.mathworks.com/),特别是Loren的,谈论Matlab的一些有趣/好奇的方面.此外,还有我们这里,或者是Matlab Answers的人,他们总是很乐意帮助你理解代码(除非它让我的眼睛流血.我不喜欢当我的眼睛流血). (2认同)

KC *_*lin 8

试试这个网站:
http://www.compileonline.com/execute_matlab_online.php
它有一个Matlab编译器以及许多其他语言,如Perl,Python,Java,C等.


Sam*_*rts 7

  1. 您可以尝试Octave,它与MATLAB免费且非常兼容.

  2. 在该片段的末尾(假设myCondition为真),someVar将是具有长度的向量myTotal(即,大小为1的数组myTotal).所述向量的每个元素将是带有三个字段的结构member1,member2member3.向量的第一个元素将包含所有三个字段的值; 剩下的只有for的值member3,并且将空数组作为member1和的值member2.如果myCondition是假的,你必须有两个字段结构单一member1member2.

希望有所帮助!


sff*_*ffc 7

我为MATLAB/Octave编写了一个免费的在线界面,它可以运行脚本,还有一个实时提示符,您可以在其中输入命令.您还可以在会话之间保存脚本.请在octave-online.net上查看.