MATLAB Answers

Combining results of a 3D array

1 view (last 30 days)
Jonathan
Jonathan on 26 Mar 2020
Commented: James Tursa on 26 Mar 2020
Hi everyone,
I have a series of ND arrays of the same size filled with zeroes and ones. I want to combine the array with the following rules:
If at the X and Y position for all arrays there is a zero, the final array will be a zero. If there is a 1 at any location, the final array will have a 1 at that location.
However, I am getting an error message of 'Attempt to grow array along ambiguous dimension.
This is the logic of the code I have so far:
% Assuming S is an array of arrays (implies M x N x P)
% M - number of rows
% N - number of columns
% P - number of such matrices
p = 1;
while (some condition holds true)
S(:,:,p) = (M - y).^2 + (N - x).^2 <= radius.^2;
p = p+1;
update_of_condition;
end
D = zeros(M,N);
index1Loc = sum(S,p-1) ~= 0;
D(index1Loc) = 1; %this is where the error of 'Attempt to grow array along ambiguous dimension.' occurs

  0 Comments

Sign in to comment.

Accepted Answer

James Tursa
James Tursa on 26 Mar 2020
Is any(S,3) what you want?

  2 Comments

Jonathan
Jonathan on 26 Mar 2020
I'm not sure since I don't know how to check the output. Will this code add up and compare all the arrays within the ND array?
James Tursa
James Tursa on 26 Mar 2020
Use a small example and see if it does what you want. The result will be a 1 if any of the 3D spots is a 1, and 0 otherwise.

Sign in to comment.

More Answers (0)