Info
Questa domanda è chiusa. Riaprila per modificarla o per rispondere.
Pre-allocate memory gives zeros all the time, how to avoid?
1 visualizzazione (ultimi 30 giorni)
Mostra commenti meno recenti
In the beginning of a function, we have to pre-allocate memory by doing something like this: integ_signal=zeros(5,4);
Using the below code as an example, if I comment out this line: integ_signal=zeros(5,4);, I will get the desired answer which is 10.1 instead of 0.1. But, in Matlab Function block, I have to pre-allocate memory, how could I pre-allocate memory at the same time still won't assign zero to the integ_signal all the time?
integ_signal(1,1)=10;
integ_signal=zeros(5,4);
a=zeros(10);
arr=zeros(5,4);
count=2;
a=1;
integ_signal(count,1)= integ_signal(count-1,1);
arr(count,1) = integ_signal(count,1);
arr(count,1) = arr(count,1) + abs(I(1,a)-I(1,a+1));
(Desired answer, without pre-allocating memory) >> arr arr =
0 0 0 0
10.1000 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
(Wrong answer, with pre-allocating memory) >> arr
arr =
0 0 0 0
0.1000 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 Commenti
Risposte (2)
Azzi Abdelmalek
il 7 Nov 2013
In your Matlab function, declare a variable arr as persistent
persistent arr
if isempty(arr)
arr=zeros(5,4)
end
You write
a=zeros(10),
a=1
The result is a=1 , then the line a=zeros(10) is unnecessary
1 Commento
Simon
il 7 Nov 2013
Hi!
Maybe your missing 10 because the first two rows are in the wrong order?
0 Commenti
Questa domanda è chiusa.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!