Multiply a cell array with a scalar

86 Ansichten (letzte 30 Tage)
Patrik Ek
Patrik Ek am 10 Feb. 2014
Bearbeitet: swenia am 4 Feb. 2020
Hi, I have a cell array that contain a number of different sized matrices. I need to multiply each of these cell elements, where the number of cells is not constant, with a single scalar value. Does anyone know how to do this? It does not work with the standard call of cellfun since the cells are of different size,
cellfun(@times,a,{2})
The reason is that I use matlab as an interface to create stuff to another program and I depending on what item I create I need to use different tones on the colormaps.

Akzeptierte Antwort

Azzi Abdelmalek
Azzi Abdelmalek am 10 Feb. 2014
Bearbeitet: Azzi Abdelmalek am 10 Feb. 2014
yournumber=2;
a={[1 2 3],[2 5;6 8], [2 5 8 7]}
cellfun(@(x) x*yournumber,a,'un',0)
  4 Kommentare
Andrew Bliss
Andrew Bliss am 4 Aug. 2016
Bearbeitet: Andrew Bliss am 4 Aug. 2016
'un',0 is a shorthand way of writing 'UniformOutput',false See the help for what that means - in essence it will make cellfun output a cell rather than an array.
swenia
swenia am 4 Feb. 2020
Bearbeitet: swenia am 4 Feb. 2020
This is very helpful, thanks. Follow-up question: what if I'd like to multiply each cell element with a different number stored in a vector?
For instance:
a = {[1 2; 3 4], [5 6; 7 8]}
b = [0;1]
I'd like to multiply a and b such that the result will be:
ans = {[0 0; 0 0], [5 6; 7 8]}

Melden Sie sich an, um zu kommentieren.

Weitere Antworten (0)

Kategorien

Mehr zu Cell Arrays 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!

Translated by