分号是否在Matlab/倍频程函数体中?
在Octave/Matlab中考虑以下两个函数:;它们之间的唯一区别在于正文中的行是否以分号结尾:分号是否在Matlab/倍频程函数体中?,matlab,octave,Matlab,Octave,在Octave/Matlab中考虑以下两个函数:;它们之间的唯一区别在于正文中的行是否以分号结尾: function [a, b, c] = fooNoSemicolons (x, y, z) a = x * 42 b = y + 42 c = (x * y) / (z * 42) endfunction function [a, b, c] = fooSemicolons (x, y, z) a = x * 42; b = y + 42; c = (x * y) /
function [a, b, c] = fooNoSemicolons (x, y, z)
a = x * 42
b = y + 42
c = (x * y) / (z * 42)
endfunction
function [a, b, c] = fooSemicolons (x, y, z)
a = x * 42;
b = y + 42;
c = (x * y) / (z * 42);
endfunction
现在考虑下列调用及其输出:
fprintf ("no semicolons: \n"); disp (fooNoSemicolons (12, 13, 14));
fprintf ("done\n");
fprintf ("semicolons: \n"); disp (fooSemicolons (12, 13, 14));
fprintf ("done\n");
显然,这两个函数产生相同的答案,a的值,即504,但我不太清楚里面是否有语义上的不同
我在Matlab/Octave中找不到关于分号含义的文档,但我又做了一些实验,但没有给出太多说明:
fprintf ("noSemicolons: \n");
[someA, someB, someC] = fooNoSemicolons (12, 13, 14);
fprintf ("done\n");
disp ([someA, someB, someC]);
fprintf ("semicolons:\n");
[moreA, moreB, moreC] = fooSemicolons (12, 13, 14);
fprintf ("done\n");
disp ([moreA, moreB, moreC]);
fprintf ("noSemicolons: \n");
otherStuff = fooNoSemicolons (12, 13, 14);
% otherStuff apparently does not get bound to an array or vector!
disp (otherStuff);
fprintf ("done\n");
fprintf ("semicolons:\n");
moreStuff = fooSemicolons (12, 13, 14);
% moreStuff apparently does not get bound to an array or vector!
fprintf ("done\n");
disp (moreStuff);
在Matlab/Octave代码行的末尾放一个分号可以防止控制台打印答案/变量赋值/任何内容
x=5
将x设置为5并打印x的值
x=5;
将x设置为5。在命令窗口中键入
help punct
。这是一个通常在学习Matlab的前五分钟学习的东西。看起来你的问题已经被正确回答了。正如您所知,如果您使用的是MATLAB的许可副本,那么您应该可以通过MATLAB帐户访问免费的2小时在线培训课程。它很好地概述了基础知识,包括分号。我使用的是八度音阶,但尽量保持在它的Matlab子集内。我使用的是DSL生成的代码,所以我要深入到最深处,以一种由内而外的方式进行计算,而不是像学生那样从顶部进行计算。@horchlerhelp punct
不幸的是,在八度音阶下无法工作。
x=5
x=5;