MATLAB: Row vector, array matrix

arrayrow vector

You can read this link. The code is good for the 1×72 double but it's not a general code because I could have 1xn double. How can I do in this situation? The question is that it's not always a 8×8 matrix but it's depend on the number of zero in the 1xn double. The problem is that I have in general 1xn double and not 1×72. So the reshape (8,8) it's not good in general. The important thing is that when there is a zero value, it's start a new rows: always. This is the important thing.

Best Answer

OK. Provided that the zeros appear periodically just the way you have shown in your code, you could use
indz = find(A==0); % find positions of zeros in A
numr = indz(2)-indz(1)-1; % compute the constant(!) row lengths
A(A == 0) = [];
B = reshape(A,numr,length(A)/numr)
Again, if there is not a constant number of non-zero elements in each interval (that includes also the last interval) you end up with different row lengths. In that case you cannot build a matrix that satisfies your requirements.