Mik*_*ebb 18 matlab matlab-compiler
我提前为这个问题道歉.我不喜欢"解释此代码"的问题,但我找不到任何关于我的具体示例的文档.
背景
我的问题是这个.我试图将一些MATLAB代码翻译成C#,但我同时还要学习MATLAB.我不与任何知道MATLAB代码的人合作,我无法访问MATLAB,所以我无法测试任何代码,我找不到任何关于以下问题的文档.所以...
问题(S)
在某处可以使用免费的在线/桌面MATLAB编译器/解释器来测试MATLAB代码吗?
...要么...
是否有人可以解释以下代码段:
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
成为一个数组?难道我失去了member1
和member2
或者它救什么我已不知何故?
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().someVar
myValue3
someVar
myTotal
someVar(1).member1
myValue1
someVar(i).member1
[]
if (myCondition)
for i=1:myTotal
someVar(i).member3=myValue3;
end;
end;
Run Code Online (Sandbox Code Playgroud)
/ aside:这个循环是定义结构的一种相当低效的方法.因此,您需要翻译的代码中可能没有太多Matlab优化的语法.
试试这个网站:
http://www.compileonline.com/execute_matlab_online.php
它有一个Matlab编译器以及许多其他语言,如Perl,Python,Java,C等.
您可以尝试Octave,它与MATLAB免费且非常兼容.
在该片段的末尾(假设myCondition
为真),someVar
将是具有长度的向量myTotal
(即,大小为1的数组myTotal
).所述向量的每个元素将是带有三个字段的结构member1
,member2
和member3
.向量的第一个元素将包含所有三个字段的值; 剩下的只有for的值member3
,并且将空数组作为member1
和的值member2
.如果myCondition
是假的,你必须有两个字段结构单一member1
和member2
.
希望有所帮助!