adding data from one cell array to a matrix
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Joseph Lee
am 29 Nov. 2017
Bearbeitet: Joseph Lee
am 30 Nov. 2017
M is a 2x4matrix
H is a 3x4cell array
How do i add the 1st row of H to every row of M?
M = [
1 2 3 4
5 6 7 8
];
H = {[15 35] [10 20] [30 40 10] [15]
[30 20 15] [45 55] [50 70] [30 70]
[25] [10 20 30] [25 35] [60 70]};
fun = @(m,h) [fliplr(h)+m,m,m+h];
ans=cellfun(fun,num2cell(M), *H{1,:}*,'Uni',0); < what do i put H as?
ans={[36 16 1 16 36] [20 12 2 12 22] [13 43 33 3 33 43 13] [19 4 19]
[40 20 5 20 40] [26 16 6 16 26] [17 47 37 7 37 47 17] [23 8 23]}
2 Kommentare
Stephen23
am 29 Nov. 2017
Do not use ans as the names of any variable. It is a special variable that can be overwritten by MATLAB.
Akzeptierte Antwort
Stephen23
am 29 Nov. 2017
Bearbeitet: Stephen23
am 29 Nov. 2017
If M has two rows then
H([1,1],:)
In general
H(ones(1,size(M,1)),:)
or
repmat(H(1,:),size(M,1),1)
3 Kommentare
Stephen23
am 29 Nov. 2017
Demonstration:
M = [1,2,3,4;5,6,7,8];
H = {[15,35],[10,20],[30,40,10],[15];[30,20,15],[45,55],[50,70],[30,70];[25],[10,20,30],[25,35],[60,70]};
fun = @(m,h) [fliplr(h)+m,m,m+h];
tmp = H(ones(1,size(M,1)),:);
C = cellfun(fun,num2cell(M),tmp, 'Uni',0);
Giving:
>> C{:}
ans =
36 16 1 16 36
ans =
40 20 5 20 40
ans =
22 12 2 12 22
ans =
26 16 6 16 26
ans =
13 43 33 3 33 43 13
ans =
17 47 37 7 37 47 17
ans =
19 4 19
ans =
23 8 23
>>
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Line Plots finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!