Question about Recursively Adding Vectors to a Single Vector

1 visualizzazione (ultimi 30 giorni)
Hello all,
I am a newbie in Matlab and would appreciate your time on my problem.
I would like to create an index which start with:
i.e., index0 = [0 7 10]';
And then, I would like to add 24 to each of the element in index0:
i.e., index1 = [0 7 10]' + 24;
Finally, I want to sum all the indices into one vector:
i.e., index = [index0;index1;...indexN]
However, I got the problem of "Out of memroy" when executing the following code. I think the code is farily simple, and I cannot figure out what is the reason? I would appreicate if you can advise the best way to do this?
Here is the code hat has the memory issue:
count = 1;
index = [0 7 12]'; % change value at hr = 0, 5, 11
while count <= 365
index_new = index + 24;
index = [index;index_new]; % store all data in one vector
count = count + 1;
end
By the way, this code was run on 32-bit Matlab 2009b and it will display memory issues, but if run at 64-bit Matlab 2011a then I have to manually shut down my comptuer and restart. There is no way to quit the Matlab and the computer is dead then. I feel frustrated about this issue since I have to reinforce the shut-down and restart every time.
Thanks a lot!
Jackie
  1 Commento
Fangjun Jiang
Fangjun Jiang il 3 Ott 2011
I don't think your code is right for your intent. try while count <= 3 first, check the value of index and modify your code to make it right first. There is probably a better way to do it but try your approach first.

Accedi per commentare.

Risposta accettata

Fangjun Jiang
Fangjun Jiang il 3 Ott 2011
For your reference:
a=zeros(3,366);
a(1,:)=0:24:(365*24);
a(2,:)=7+a(1,:);
a(3,:)=12+a(1,:);
index=a(:)
  9 Commenti
Fangjun Jiang
Fangjun Jiang il 3 Ott 2011
Then you'd better use the bsxfun().
c=bsxfun(@plus,(0:7)',[0 24 48])

Accedi per commentare.

Più risposte (1)

Walter Roberson
Walter Roberson il 3 Ott 2011
You are doubling the amount of memory you use for index() in each iteration of the loop. Your computer cannot hold 3 * 2^365 elements -- that would be over 22 x 10^100 memory locations.

Tag

Non è stata ancora inserito alcun tag.

Community Treasure Hunt

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

Start Hunting!

Translated by