i want to replace cell data to index.
Ältere Kommentare anzeigen
Hello,
I'm poor at English so write simple code..
cell data is a = {[1 2 3 4 ] [5 6] [ 7 8 9]} ; index = [2 1 3] ; -> 10 11 12
the result is a = {[1 10 3 4] [ 11 6] [7 8 12 ]}
cell data size are different.
i want to replace the cell data at the same time. How can i replace the data without using for loop. i don't know how to use cellfun function or another method.
for example,
at matrix a = [1 2 3 4 5] ; a([1 3]) = [100 200 ] ; the result is a=[100 2 200 4 5] ;
i want like this at cell.
thanks.
2 Kommentare
Jos (10584)
am 20 Jan. 2014
Do you want to replace a value or insert it?
Seongjin
am 21 Jan. 2014
Akzeptierte Antwort
Weitere Antworten (3)
Jos (10584)
am 20 Jan. 2014
To insert values at a location in a cell of A:
A = {[1 2 3 4 ] [5 6] [ 7 8 9]} ;
index = [2 1 3] ;
B = [10 11 12] ;
fh = @(k) insertrows(A{k}.', B(k), index(k)-0.5).' ; % offset of 0.5 to insert _before_
OUT = arrayfun(fh,1:3,'un',false)
INSERTROWS can be found here:
http://www.mathworks.com/matlabcentral/fileexchange/9984-insertrows-v2-0-may-2008
1 Kommentar
Andrei Bobrov
am 20 Jan. 2014
a = {[1 2 3 4 ] [5 6] [ 7 8 9]} ;
index = [2 1 3] ;
b = [10 11 12];
n = cellfun(@numel,a);
v = [a{:}];
ii = index +[0 cumsum(n(1:end-1))];
v(ii)=b;
out = mat2cell(v,1,n);
Jos (10584)
am 22 Jan. 2014
Bearbeitet: Jos (10584)
am 23 Jan. 2014
To replace values at a location in a cell of A:
Step 1: Create a function like this
function X = MyReplace(X,ii,V)
% MyReplace(X,ii,V) replaces X(ii) with V
X(ii) = V ;
Step 2: Use it like this:
% Example data
A = {[1 2 3 4 ] [5 6] [ 7 8 9]} ;
index = [2 1 3] ;
B = [10 11 12] ;
% Engine
fh = @(k) MyReplace(A{k},index(k),B(k)) ;
OUT = arrayfun(fh,1:3,'un',false)
Kategorien
Mehr zu Matrices and Arrays finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!