Manipulating arrays within a cell array

8 Ansichten (letzte 30 Tage)
mathman
mathman am 4 Jan. 2018
Bearbeitet: mathman am 7 Jan. 2018
I have a cell array, A_C which has 401 cells (1x401) each with arrays of varying sizes, but same dimensionality. I'm trying to divide each element within an array by the number of elements within that array. And then replace the array with the new one.
So for example, the array A(1,2) = 1x101, I want to divide each element within this array by 101, B = A(1,2)/101 and then I want to replace the array at A(1,2) by B.
  1 Kommentar
mathman
mathman am 4 Jan. 2018
I think I solved it, I'll leave the thread up incase someone wants to do something similar.

Melden Sie sich an, um zu kommentieren.

Akzeptierte Antwort

Jan
Jan am 4 Jan. 2018
Bearbeitet: Jan am 4 Jan. 2018
% Create some test data: (your code)
dxs = 0:5e-06:0.002;
nCell = length(dxs);
xs = cell(1, nCell); % Pre-allocate!!!
for k = 1:nCell
xs{k} = 0:dxs(k):5e-04;
end
% Divide each cell by its length:
B = cell(size(xs)); % Pre-allocate!!!
for k = 1:nCell
B{k} = xs{k} / length(xs{k});
end
Simple with a loop, isn't it? I find "nCell" nicer than "num_cells_dxs" and avoid "l" as variable, because it is confused with 1 easily.
I assume the cellfun is nicer, but slower:
B = cellfun(@(c) c / length(c), xs, 'UniformOutput', false)

Weitere Antworten (1)

mathman
mathman am 4 Jan. 2018
for n = 1:l
xs_current1{n} = xs_current1{1,n}/num_point_sources(1,n);
end

Kategorien

Mehr zu Resizing and Reshaping Matrices finden Sie in Help Center und File Exchange

Tags

Community Treasure Hunt

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

Start Hunting!

Translated by