MATLAB Answers

0

Moving the contents in the cell array

Latest activity Commented on by Walter Roberson
on 10 Jan 2019
data = {'abc' , 'def' , 'ghi'}
I have a cell array named data. Now i need to move the contents to another index in the same array and delete the older contents.
for example: data([4 5 6]) = data
This will give the result as data = {'abc' , 'def' , 'ghi', 'abc' , 'def' , 'ghi'}. Instead of this i just need to move the contents based on the index number and empty the contents in the older position.
Answer should be like this,
data = {[],[],[],'abc' , 'def' , 'ghi'}
How can i do it?
Thanks a lot

  0 Comments

Sign in to comment.

4 Answers

Answer by Stephen Cobeldick on 2 Sep 2016
Edited by Stephen Cobeldick on 2 Sep 2016

>> data = {'abc' , 'def' , 'ghi'};
>> data(4:6) = data;
>> data(1:3) = {[]}
data =
[] [] [] 'abc' 'def' 'ghi'
OR
>> data = [repmat({[]},1,numel(data)),data]
data =
[] [] [] 'abc' 'def' 'ghi'
OR
>> data(4:6) = {[]};
>> data = circshift(data,[1,3])
data =
[] [] [] 'abc' 'def' 'ghi'
OR
>> tmp = {[]};
>> data = circshift([data,tmp([1,1,1])],[1,3])
data =
[] [] [] 'abc' 'def' 'ghi'
OR
>> data(2,:) = {[]};
>> data = reshape(flipud(data)',1,[])
data =
[] [] [] 'abc' 'def' 'ghi'
OR
>> data = repmat(data,1,2);
>> data(1:3) = {[]}
data =
[] [] [] 'abc' 'def' 'ghi'

  0 Comments

Sign in to comment.


Answer by Azzi Abdelmalek
on 2 Sep 2016

data = {'abc' , 'def' , 'ghi'}
data1([4 5 6])=data

  4 Comments

Show 1 older comment
then just write
data=data1
how if we have a cell that contains binary image or another image. how can we move that image that was stored o a new variable? so that we can show it using imshow().
new_variable = name_of_cell{row_index, column_index};
imshow(new_variable)
but note that imshow() would be happy with
imshow( name_of_cell{row_index, column_index} );

Sign in to comment.


Answer by KSSV
on 2 Sep 2016

data = {'abc' , 'def' , 'ghi'} ;
iwant = cell(1,6) ;
iwant(4:6) = data ;

  1 Comment

I want to move it in the same cell array. Not by shifting it to another new cell array

Sign in to comment.


Answer by KSSV
on 2 Sep 2016

data = [cell(1,3) data]

  2 Comments

If i get the index as [4 7 9] then above does it work. I will get the random index and based on the index number i need the place the contents in the cell array
That case you have to initialize the cells empty with some name...and replace your data with the indices...like get iwant and rename it as data again...

Sign in to comment.