フィルターのクリア

How can prelocate arrays?

4 ビュー (過去 30 日間)
Ayob
Ayob 2013 年 4 月 23 日
I have an array like A which I want to have all of its elements zero by using Matlab features like zeros(x) function.
for example:
A=[1*3][1*3][1*3][1*3]
Each 1*3 matrix in the array A should have 3 zero.
I know how to make matrices with zero elements e.g zeros(2,3) but I don't know how to use it for array shown above with Matlab features without using simple loops.
  3 件のコメント
Ayob
Ayob 2013 年 4 月 23 日
編集済み: Ayob 2013 年 4 月 23 日
>> A{1}=[0 0 0]
A = [1x3 double]
>> A{2}=[0 0 0]
A = [1x3 double] [1x3 double]
>> A{3}=[0 0 0]
A = [1x3 double] [1x3 double] [1x3 double]
Does it look clear now?
Matt J
Matt J 2013 年 4 月 23 日
If A is a cell array, then my Answer below will be applicable.

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

採用された回答

James Tursa
James Tursa 2013 年 4 月 23 日
This method uses a shared data copy of [0 0 0] to populate the individual cell elements, so it is memory efficient:
A = cell(1, n); % Or whatever size you need
A(:) = {[0 0 0]};
However, pre-allocating cell elements only makes sense in certain cases. E.g., it does not make sense if you are simply going to overwrite the elements with something else downstream in your code. How is the array A going to be used downstream in your code?
  3 件のコメント
Ayob
Ayob 2013 年 4 月 23 日
It doesn't work in my program: MATLAB error: ??? The following error occurred converting from cell to double:
Error using ==> double
Conversion to double from cell is not possible.
Error in ==> ThesisMLS at 81
A(:)={[0 0 0]};
James Tursa
James Tursa 2013 年 4 月 24 日
Be sure to do A = cell(1, n) first.

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

その他の回答 (1 件)

Matt J
Matt J 2013 年 4 月 23 日
編集済み: Matt J 2013 年 4 月 23 日
This might be what you need
out = cellfun(@(c) zeros(size(c)), A, 'uni',0),
It has shorter syntax than a loop, but is not faster.

カテゴリ

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