我想知道如果可能以及如何在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' –