Вы можете получить размер любой переменной в MATLAB, используя функцию whos
. Он возвращает структуру, содержащую имя, размер, класс, количество байтов и некоторые другие значения переменной. Для того, чтобы получить информацию о переменной A
, вы звоните
info = whos('A');
Таким образом, вы могли бы, например, выполните следующие действия:
% Create matrices
A = [0 1 0 0; 1 0 0 0; 0 0 1 0; 0 0 0 1]
S = sparse(A)
before = whos('A')
after = whos('S')
comprRatio = before.bytes/after.bytes
, который в этом маленьком примере возвращает
comprRatio =
1.2308
как матрица A
составляет 128 байт, а разреженная матрица S
составляет 104 байт.
Если вы выполняете какое-либо другое сжатие (я не полностью понял, какое сжатие вы пытаетесь достичь), вы можете сделать то же самое с whos
.
Разве не цель сжатия - восстановить сигнал на конце приемника? Я имею в виду, что слепое опускание нулей сжимает сигнал, но как вы сможете восстановить его позже, если потребуется? – roni
@roni \t У меня есть сигнал, и я хочу сжать его, для чего я должен был бы это сделать, я хотел бы знать, есть ли встроенный алгоритм сжатия в Matlab или нет, или как его сжать? ?? –
Любой конкретный алгоритм в виду? Любые требования к алгоритму (скорость, эффективность)? Можете ли вы привести пример своего разреженного вектора? Пожалуйста, добавьте информацию из комментария к вопросу. – Trilarion