Effacer les filtres
Effacer les filtres

Cell contents reference from a non-cell array object.

1 vue (au cours des 30 derniers jours)
mazari ahmed
mazari ahmed le 12 Mar 2015
Commenté : mazari ahmed le 9 Avr 2015
How to delete an element k in a cell array in a for loop? l have a set called neighbour_n{i} where i varies from 1 to n
But it returns me this error :
??? Cell contents reference from a non-cell array object.
Error in ==> @(d)setxor([d{:}],[k])
Error in ==> broadcastelimination at 118 cellfun(fun, neighbour_n, 'UniformOutput', false)
neighbour_n=cell(N,1);
N = numel(neighbour_n);
for i=1:N
if (ismember(k, neighbour_n{i}));
idx = find(cell2mat(neighbour_n{i}) == k);
neighbour_n{i}(idx) = [];
end
end
  8 commentaires
Stephen23
Stephen23 le 13 Mar 2015
Modifié(e) : Stephen23 le 13 Mar 2015
I have no idea what "it doesn't delete the values" means.
The setdiff documentation states "setdiff(A,B) returns the data in A that is not in B."
This means if you still have values in the output that you do not expect to have then the you need to check that the input values are correct. If an element of A is not in B then it will be in the output.
And I note that the cyclist is also giving advice on your original question here:
Which is a good example of why I said at the start of this thread that you should not ask new questions about the same topic, but you should keep communicating on the same thread until the topic is resolved.
mazari ahmed
mazari ahmed le 13 Mar 2015
Modifié(e) : mazari ahmed le 13 Mar 2015
l think the problem is in the last instruction it deletes the values but doesn't update the the neighbour_n when it displays.?
display(['Display new neighbour of ', num2str(i), ' are: ', num2str(neighbour_n{i})]);

Connectez-vous pour commenter.

Réponse acceptée

mazari ahmed
mazari ahmed le 14 Mar 2015
the answer is :
neighbour_n{i}= setdiff(neighbour_n{i},F);
problem solved

Plus de réponses (1)

Image Analyst
Image Analyst le 13 Mar 2015
Not sure what's going on in your parallel discussion, but if you have a cell array called neighbour and you want to delete the k'th cell from that cell array, you can do this:
neighbour_n(k) = []; % Note parentheses, not braces.
You don't need to put it in a loop. See the FAQ: http://matlab.wikia.com/wiki/FAQ#What_is_a_cell_array.3F to get a better intuitive feeling for cell arrays.
  3 commentaires
Image Analyst
Image Analyst le 13 Mar 2015
Sorry - it's too late at night for me to delve into all that. I suggest you keep at it with your original thread.
mazari ahmed
mazari ahmed le 9 Avr 2015
Problem solved

Connectez-vous pour commenter.

Catégories

En savoir plus sur Matrix Indexing dans Help Center et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by