我不太熟悉matlab,请帮助我将以下代码片段的第三行转换为C++。
(我搜索过.*是元素级产品,是冒号运算符(如linspace),
但还是被塞住了)。
nbangles_coarse = 8; % just number, not data structure
nbscales = 6; % just number, not data structure
% please explain meaning of the next row
nbangles = [1, nbangles_coarse .* 2.^(ceil((nbscales-(nbscales:-1:2))/2))];
创建了哪种数据结构?矩阵还是向量?
发布于 2015-08-18 10:34:03
nbscales:-1:2
生成数字6到2,步进-1 (即6 5 4 3 2
)。nbscales-(nbscales:-1:2)
否定向量nbscales:-1:2
,并向每个元素添加6个以生成0 1 2 3 4
。ceil((nbscales-(nbscales:-1:2))/2)
接受前面的向量,除以2,并将每个元素循环到下一个整数,以获得0 1 1 2 2
。2.^(ceil((nbscales-(nbscales:-1:2))/2))
接受前面的向量并向其中的每个元素提出2,以生成1 2 2 4 4
nbangles_coarse .* 2.^(ceil((nbscales-(nbscales:-1:2))/2))
将每个元素乘以8以得到8 16 16 32 32
(*
产生与.*
相同的结果)。[1, nbangles_coarse .* 2.^(ceil((nbscales-(nbscales:-1:2))/2))]
只是将1
附加到该向量的开头以生成1 8 16 16 32 32
。注意,[1, nbangles_coarse * 2.^ceil((0:(nbscales-2))/2)]
对nbangles_coarse
和nbscales
的所有标量值都产生相同的结果。
发布于 2015-08-18 10:33:19
它是一个数组:
exp_arr = (nbscales:-1:2)
ans =
6 5 4 3 2
exp_halved_arr = (nbscales-exp_arr)/2
ans =
0 0.5000 1.0000 1.5000 2.0000
exp_halved_ciel_arr = ceil(exp_halved_arr)
ans =
0 1 1 2 2
arr_elementwise_exp = 2.^exp_halved_ciel_arr
ans =
1 2 2 4 4
scaled_arr = nbangles_coarse .* arr_elementwise_exp
ans =
8 16 16 32 32
% concatenate 1 at the beginning of the array
nbangles = [1, scaled_arr ]
ans =
1 8 16 16 32 32
https://stackoverflow.com/questions/32079928
复制相似问题