Delete specific rows in a multidimensional matrix

1 view (last 30 days)
Hello, I have a problem with deleting rows in my multidimensional matrix. The thing is that I have a matrix A 800X1X100 with angles and i have to delete the rows that meet the condition. Here is my code:
for k=1:1:100
if(or(Z(k,1,:)>=230,Z(k,1,:)<=330))
Z(k,1,:) = [];
end
end
here is the error: A null assignment can have only one non-colon index.
Thank you.

Answers (1)

gonzalo Mier
gonzalo Mier on 24 Oct 2018
The solution for your problem could be:
Z=rand(800,1,100)*400;
for(k=800:-1:1)
if(or(Z(k,1,:)>=230,Z(k,1,:)<=330))
Z((k-1)*100+(1:100)) = [];
Z = reshape(Z,[],1,100)
end
end
or use the squeeze function to make Z shape [800,100]
  1 Comment
David Ponce
David Ponce on 24 Oct 2018
Edited: David Ponce on 24 Oct 2018
Thanks for the answer, but now I know the problem, the thing is that I have to reshape my multidimensional matrix as I go deleting the rows. I have this:
for m=1:1:size(Z,3)
for n=1:1:size(Z,1)
if(and(Z(n,1,m)>=230 , Z(n,1,m)<=330))
Z(n,1,m) = []; %here is the problem i have to reshape
end
end
end

Sign in to comment.

Categories

Find more on Resizing and Reshaping Matrices in Help Center and File Exchange

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!