Create cell array with the same string n-times

Hi all,
I have another problem I haven't found any soulution for yet.
I have a list of Values and I have the name of the .mat-file the values are saved in as a string.
For example
name='Values.mat'
values =
1
2
3
4
5
Now I need to create a cell array with the name of the file for each value.
For example
>> values.filename
ans =
Values.mat Values.mat Values.mat Values.mat Values.mat
Does anybody know how I can create that cell array, size depending on how many values I have?
Thanks a lot! Oli

 採用された回答

Daniel Shub
Daniel Shub 2011 年 10 月 2 日

6 投票

The names of your variables are a little confusing ... You are starting with values being a double array and then wanting values to be a structure ...
To answer your question you can create a cell array with the same string n-times with deal.
doc deal
Specifically you can make a 1x5 cell array filename have the value saved in name with:
[filename{1:5}] = deal(name);
you may want to consider a structure array ...
values = struct('value', mat2cell(values, 1, ones(5, 1)), 'filename', name)

2 件のコメント

Olli
Olli 2011 年 10 月 2 日
移動済み: Dyuman Joshi 2024 年 2 月 28 日
Thanks a lot! Sorry for the confusing description, but your responses were very helpful! Oli
morteza HEIDARI
morteza HEIDARI 2017 年 2 月 13 日
thank you man. it was helpful.

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

その他の回答 (3 件)

Jan
Jan 2011 年 10 月 2 日

95 投票

C = cell(1, 5);
C(:) = {'String'};

11 件のコメント

Jonathan Deaton
Jonathan Deaton 2015 年 12 月 8 日
You are the real winner here.
Youcef Yahiaoui
Youcef Yahiaoui 2016 年 3 月 15 日
Jan Simon's answers are always the best. Whenever I look anything up, I always look for this distinct picture! Thanks, Jan Simon.
Walter Roberson
Walter Roberson 2017 年 1 月 4 日
Yifei Wang comments to Jan:
short and good as always
Jan
Jan 2017 年 1 月 4 日
Thanks. I forward the compliments to Matlab, which allows such compact and nive solutions. Try the same in C... ;-)
Pearl
Pearl 2019 年 1 月 30 日
awesome! Another thanks to you!
Jon
Jon 2019 年 7 月 10 日
very nice technique - found this before, forgot it, and just came back again - thank you
BN
BN 2020 年 2 月 11 日
Dear Jan,
Thank you, it solve my problem too. I just want to say thanks to you.
Best Regards
Saeid
Saeid 2020 年 9 月 24 日
Jan's always there to give the shortest version of every solution. This helped me too!
Fabio Rondina
Fabio Rondina 2021 年 9 月 24 日
still usefull after 10 years. Thanks @Jan
Rob
Rob 2021 年 12 月 17 日
Nice simple solution but it baffles me why Matlab needs two lines of code to do a simple task (or why the default is to set the contents as doubles)?
M_A_C
M_A_C 2024 年 2 月 28 日
Hello Jan,
Your elegant solution worked for me using the function strings.

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

Grzegorz Knor
Grzegorz Knor 2011 年 10 月 2 日

13 投票

repmat({'filename.mat'},1,5)
dscharf
dscharf 2023 年 8 月 17 日
編集済み: Dyuman Joshi 2024 年 2 月 28 日

1 投票

Riff'ing on @Jan's answer and noting @Rob's comment,
c(1:5) = {'string'}
c = 1x5 cell array
{'string'} {'string'} {'string'} {'string'} {'string'}
gives a 1x5 in one line (assuming c hasn't been defined before) and
d(1:5,1) = {'string'}
d = 5x1 cell array
{'string'} {'string'} {'string'} {'string'} {'string'}
gives a 5x1. Or at least they do in 2022a.

カテゴリ

ヘルプ センター および File ExchangeMatrix Indexing についてさらに検索

タグ

質問済み:

2011 年 10 月 2 日

移動済み:

2024 年 2 月 28 日

Community Treasure Hunt

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

Start Hunting!

Translated by