Hello, I have code that has matrix K which is a 6x6 matrix. I want to remove certain columns from the K matrix to build a new matrix, Kca. The problem is it keeps updating Kca every time it removes a certain column, causing the next column to be removed the one I don't want or is out of bounds. Any ways around this? I've include my code.

 Réponse acceptée

James Tursa
James Tursa le 10 Oct 2016
Modifié(e) : James Tursa le 10 Oct 2016
If the indexes you want removed are in sorted ascending order, you could probably just reverse the order of your for-loop indexing. E.g.,
for i=1:Ny
would become
for i=Ny:-1:1
That way you delete stuff from the back end first and the indexing doesn't get screwed up for the next iteration. If the indexing you want deleted is not in ascending sorted order, then sort it first.
Note that this incremental deletion causes a data copy at each iteration. For your small matrix this won't matter, but if the matrix is large this can be a huge performance drag. In that case it would be better to delete all of the stuff at once instead of incrementally.

Plus de réponses (1)

Walter Roberson
Walter Roberson le 10 Oct 2016

0 votes

Remove the columns starting from the last one and moving toward the first.

Catégories

Community Treasure Hunt

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

Start Hunting!

Translated by