Я не помню, в каком задании я видел, как кто-то это использовал (пожалуйста, сообщите нам =), но я нашел это изящным трюком:
Обычно, если вы добавляете матрицы, они должны иметь одинаковый размер, но для одномерных матриц (1xn и nx1) есть ярлык (который не работает в Matlab):
num2cell([1 2 3 4]){:}
производит тот же эффект, что и
a={1,4,{4 5 6},[7 ;3]};a{3}
Затем кое-что, о чем уже упоминал pawel.boczarski: в Octave вы можете (в то время как вы не можете в Matlab) определять вспомогательные переменные внутри дескрипторов функций, И само присвоение переменной имеет значение присваивания, поэтому вы можете действительно сократить код (ну, это бесполезная процедура). пример, но вы поймете трюк):
{1,4,{4 5 6},[7 ;3]}{3}
Тогда еще один трюк (также применимый в Matlab) — злоупотребление строками для хранения (жестко запрограммированных) чисел. (этот изящный трюк украден из Feersum), вам просто нужно что-то, что интерпретирует строку как число, что так же просто, как, например, добавление нуля:
h=hilb(4);h(4:5,4:5)
Или
hilb(4)(4:5,4:5)
||answer||
Пропустите точки с запятой!
я буду использовать этот ответ чтобы проиллюстрировать суть.
Исходный код был:
a=[1 23 4 5 7];a(3:4)
После удаления точек с запятой его можно было бы сократить до следующего, сэкономив три байта:
[1 23 4 5 7](3:4)
Это можно использовать во многих местах, и вещи, которые вы даже не пробуете, потому что это выглядит как синтаксическая ошибка, часто срабатывает.