Filter löschen
Filter löschen

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?

2 Ansichten (letzte 30 Tage)
want2know
want2know am 7 Nov. 2013
Geschlossen: MATLAB Answer Bot am 20 Aug. 2021
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

Antworten (2)

Azzi Abdelmalek
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
want2know
want2know am 7 Nov. 2013
ok, i tried this in Matlab workspace, but I got this Error using persistent A PERSISTENT declaration is only allowed in a M-file function. So, I was thinking to try this in my m-file, but due to the error I posted earlier (<http://www.mathworks.co.uk/matlabcentral/answers/105217-subscripted-assignment-dimension-mismatch-size-1-x-1-size-1-x)>, I could not check the outcome of using persistent yet.

Simon
Simon am 7 Nov. 2013
Hi!
Maybe your missing 10 because the first two rows are in the wrong order?

Diese Frage ist geschlossen.

Community Treasure Hunt

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

Start Hunting!

Translated by