【发布时间】:2017-05-08 07:06:20
【问题描述】:
我想编写一个“语法糖”Octave 或 Matlab 零填充函数,用户向其发送一个 n 维对象和一个
y = simplepad(X, [128 128 128]);
因此将前三个维度填充为 2 的幂以进行小波分析(实际上我使用单独的函数 nextpwr2 来查找这些维度),而保留其他维度。
我已经绞尽脑汁想如何编写这种方法来避免可怕的 eval,但到目前为止还没有找到方法。任何人都可以提出解决方案吗?这或多或少是我所拥有的:
function y = simplepad(x, pad)
szx = size(x);
n_pad = numel(pad);
szy = [pad szx(n_pad+1:end)];
y = zeros(szy);
indices_string = '(';
for n = 1:numel(szx)
indices_string = [indices_string, '1:', num2str(szx(n))];
if n < numel(szx)
indices_string = [indices_string, ','];
else
indices_string = [indices_string, ')'];
end
end
command = ['y',indices_string,'=x;'];
eval(command);
end
【问题讨论】:
标签: matlab octave n-dimensional