Question about Recursively Adding Vectors to a Single Vector

1 回表示 (過去 30 日間)
Jackie Lee
Jackie Lee 2011 年 10 月 3 日
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 件のコメント
Fangjun Jiang
Fangjun Jiang 2011 年 10 月 3 日
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.

サインインしてコメントする。

採用された回答

Fangjun Jiang
Fangjun Jiang 2011 年 10 月 3 日
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 件のコメント
Fangjun Jiang
Fangjun Jiang 2011 年 10 月 3 日
Then you'd better use the bsxfun().
c=bsxfun(@plus,(0:7)',[0 24 48])
Jackie Lee
Jackie Lee 2011 年 10 月 3 日
That is great! Thanks for your help!!

サインインしてコメントする。

その他の回答 (1 件)

Walter Roberson
Walter Roberson 2011 年 10 月 3 日
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.

カテゴリ

Help Center および File ExchangeMatrix Indexing についてさらに検索

タグ

タグが未入力です。

Community Treasure Hunt

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

Start Hunting!

Translated by