Меня интересует вычисление функции на множестве перестановок значений параметров. Я хочу сохранить его общим для N измерений, но позвольте мне записать его в трех измерениях. Генерирование перестановок достаточно просто с meshgrid
, но я не могу понять, как изменить полученный результирующий массив на многомерности? Вот отправная точка:Перестановки параметров (т. Е. Декартово произведение) в многомерный массив
%These are the 3 variations of parameters, with some values.
params1 = [100, 200, 300];%Picking these so it is easy to correlate to the function
params2 = [10, 20];
params3 = [1, 2];
%This generates parameter_values as the cartesian productpermutations.
[vec1, vec2, vec3] = meshgrid(params1, params2, params3);
parameter_values = [vec1(:) vec2(:) vec3(:)];
%Calculates functions on the set of parameters.
%Would have a fancier function, of course, this just makes it easy to see the results.
raw_vals = parameter_values(:,1) + parameter_values(:,2) + parameter_values(:,3);
%Rearrange into a multiarray to access by parameter indices.
f_vals = reshape(raw_vals, [length(params1), length(params2), length(params3)]) %WRONG?
%THE FOLLOWING FAIL BUT WOULD BE EXPECTED WITH THESE PARAMETERS AND THE FUNCTION.
assert(f_vals(2,1,1) == 211)
assert(f_vals(3,2,2) == 322)
Может 'raw_values' устройств изменит такого же размера, как' vec1', '' vec2' или vec3'? – David