Azzera filtri
Azzera filtri

Replacement for bsxfun(@times)?

3 visualizzazioni (ultimi 30 giorni)
Michael
Michael il 21 Lug 2014
Risposto: John D'Errico il 21 Lug 2014
In my code I have the following data sets:
r = <150902x1 double>
specR = <301x1 double>
Now entering the following commands creates
red = bsxfun(@times, r, specR');
red = <150902x301 double>
This works perfectly for the purposes of my script. However, when I make the r and specR arrays larger, I keep on running into memory errors where Matlab cannot create the massive arrays resulting from the bsxfun. Any suggestions on how to work around this memory error? Perhaps is there another function that I can use instead of bsxfun that only computes one line of the red array at a time? Thank you for your help in advance!

Risposte (1)

John D'Errico
John D'Errico il 21 Lug 2014
You are trying to generate a LARGE array. Can you be remotely surprised that it blows your memory up? The issue is not with bsxfun, unless you really don't need that large array at all, but just need to compute something small from it.
USE A LOOP. What is the problem?

Categorie

Scopri di più su Loops and Conditional Statements in Help Center e File Exchange

Tag

Community Treasure Hunt

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

Start Hunting!

Translated by