MATLAB: Are the array dimensions being changed

array dimensionsarrayscart2sphmultidimensional arrays

I have a 3D array cart = s x 3 x p double, where s and p are variables chosen as integers by an optimiser. I'm converting this array to the array sph = s x 3 x p through cart2sph;
[sph(:,1,:), sph(:,2,:), sph(:,3,:)] = cart2sph(cart(:,1,:), cart(:,2,:), cart(:,3,:));
This works fine, unless the case happens to be the optimiser choses to set s = 1. Instead of outputting sph = 1 x 3 x p, it outputs sph = p x 3, which causes issues with my code calling the function I do this in.
It only happens with s, I've tried limiting p to 1 only it seems to run fine, can anyone help?

Best Answer

  • You can add the missing dimension.
    Experiment with this:
    x1 = rand(3,4);
    x2(1,:,:) = x1;
    To check:
    x1s = size(x1)
    x2s = size(x2)
    produces:
    x1s =
    3 4
    x2s =
    1 3 4
    You will have to set up the appropriate tests to check the dimensions, then do the assignment.