Info
Diese Frage ist geschlossen. Öffnen Sie sie erneut, um sie zu bearbeiten oder zu beantworten.
Pre-allocate memory gives zeros all the time, how to avoid?
    5 Ansichten (letzte 30 Tage)
  
       Ältere Kommentare anzeigen
    
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 Kommentare
Antworten (2)
  Azzi Abdelmalek
      
      
 am 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 Kommentar
  Simon
      
 am 7 Nov. 2013
        Hi!
Maybe your missing 10 because the first two rows are in the wrong order?
0 Kommentare
Diese Frage ist geschlossen.
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!


