我想知道如果可能以及如何在MATLAB中隐藏一行代码或整行代码。例如:在MATLAB中隐藏代码行
if a=b
x=y+1; x=x^2;
end
并且隐藏了x = x^2,但仍然运行该过程。我的意思是:
if a=b
x=y+1;
end
我想知道如果可能以及如何在MATLAB中隐藏一行代码或整行代码。例如:在MATLAB中隐藏代码行
if a=b
x=y+1; x=x^2;
end
并且隐藏了x = x^2,但仍然运行该过程。我的意思是:
if a=b
x=y+1;
end
if a==b
x = y+1;
for ind = 1
x = x^2;
end
end
的古怪方式位,但你可以折叠loop/end
块像for
和while
循环。只需点击-
登录编辑:
所以对两个或更少的线路,这并不能帮助你,但如果你想隐藏例如40行,它会略微缩短它。
另一种选择是简单地夹在一百元左右的空间,使其混淆:
if a==b
x = y+1; x = x^2;
end
感谢excaza所有最模糊的方式来写x=x^2;
:
eval(cast((sscanf('240,122,240,188,100,118', '%d,')./2)', 'like', ''))
我想我发现了一个稍微混淆的方式。 > :) – gnovice
(用脸上的邪恶的笑容绞手)
如果你真的想要这样的人混乱,你会想要去的operator overloading route。和我一起踏上旅程,在那里你几乎可以肯定地将自己踢在脚下,同时试图对别人开玩笑!
(闪电噼啪在疯子的笑)
我以前(here和here),在其他一些问题讨论这一点。基本上,您可以更改MATLAB数据类型的内置运算符的默认行为。在这种情况下,我们将更改plus
运算符对类double
(默认变量类型)的变量的工作方式。建立一个叫做@double
上的文件夹MATLAB path,然后创建一个名为plus.m
文件,并把下面的代码里面:
function C = plus(A, B)
C = builtin('plus', A, B);
if strcmp(inputname(1), 'y')
C = C.^2;
end
end
现在,自己试试看...
>> y=1; % Initialize y
>> x=y+1
x =
4 % Wait a minute...
>> x=1+1
x =
2 % OK
>> x=1+y
x =
2 % OK
>> x=y+1
x =
4 % What?!
>> x=y+2;
x =
9 % No!!
>> y=3;
>> x=y+1
x =
16 % Oh noes! I've been hax0red!!11!1!
它是如何工作:
新的plus
函数会遮住内置函数,所以在双精度上执行加法时会被调用。它首先调用内置的plus
以使用builtin
函数进行实际添加。这是必要的,因为如果您在此处写入C=A+B;
,它会再次调用伪造plus
并导致无限递归。然后,它使用inputname
函数来检查函数的第一个输入的变量名称是什么。如果它是'y'
,我们在返回之前对结果进行平方。
玩得开心!
...并记住当你完成后删除它。 ;)
如果您使用Windows,CTRL + R进行评论,CTRL + T取消注释 –
您是否在谈论隐藏它,但仍在运行它?如果是这样,为什么? – Suever
你想隐藏'x = x^2'并且仍然希望'x = x^2'执行吗?我希望那不是你问的问题! :D但是如果你仍然想要,你可以创建一个函数并调用它来代替'x = x^2'。除此之外,在if中需要两个*等于*符号。即'如果a == b' –