How to reshape a cell array ?

7 ビュー (過去 30 日間)
Baran Mehrdad
Baran Mehrdad 2018 年 9 月 24 日
コメント済み: Adam Danz 2018 年 9 月 29 日
Hi , I have a this cells :
I want to reshape them , I want each cell include a 95*1 cells which all 95 data are the same value we have for the cell before reshaping. for example look at row 27 . the value is 5.9410 . I want it to be a 95*1 cell which all of the rows has the value of 5.9410. (pls forget about row 28 and assume that in each row we have a single value)
  3 件のコメント
Baran Mehrdad
Baran Mehrdad 2018 年 9 月 24 日
the input is 672*1 cell array , which in each row we have a single value . I want it to be 672*1 cell array which in each row we have 95*1 cell array and all 95 data has a same data just like before reshaping.
for example if I have a cell array called X and X{1,1}= 2 .I want it to become X{1,1}= {95*1 cell} . and each of 95 cells has the value of 2 .
Adam Danz
Adam Danz 2018 年 9 月 24 日
The two answers below should achieve this.

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

採用された回答

Adam Danz
Adam Danz 2018 年 9 月 24 日
Assuming the data stored in ESS_estimated_schedule is a cell array,
cellfun(@(x){repmat(x,95,1)},ESS_estimated_schedule)
  13 件のコメント
Baran Mehrdad
Baran Mehrdad 2018 年 9 月 29 日
Sorry for taking to long. Actually I did not multiplied any variable by ESS_schedule , I just subtract CT from ESS_schedule and I expect to see ESS_schedule to be a 672*1 cell array which each of it's cells contain 95*1 cells . but as you can see it's just 672*1 cell array and each cell contains only one value.
Adam Danz
Adam Danz 2018 年 9 月 29 日
I think I see the cause of your problem now. It's in this line of your code:
[battery_paramaters,ESS_estimated_schedule{Schedule_index}]=obtain_current_SoC(battery_paramaters,opt_prmt(1),CT{Schedule_index}(1),DCT{Schedule_index}(1),Current_week_actual_load_data_reshape{Schedule_index}(1));
I believe CT{Schedule_index} and Current_week_actual_load_data_reshape{Schedule_index} are vectors and in the line above you are only passing the first element of those vector into obtain_current_SoC(). Remove (1) from your inputs if you want to pass the full vectors into that function.

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

その他の回答 (1 件)

Adam
Adam 2018 年 9 月 24 日
編集済み: Adam 2018 年 9 月 24 日
cellfun( @(x) x + zeros( 95, 1 ), ESS_estimated_schedule, 'UniformOutput', false );
It seems like rather large replication of redundant data, but that line should do it for you.

カテゴリ

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

Community Treasure Hunt

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

Start Hunting!

Translated by