Create cell array with the same string n-times

202 views (last 30 days)
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

Accepted Answer

Daniel Shub
Daniel Shub on 2 Oct 2011
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 Comments
Olli
Olli on 2 Oct 2011
Moved: Dyuman Joshi on 28 Feb 2024
Thanks a lot! Sorry for the confusing description, but your responses were very helpful! Oli

Sign in to comment.

More Answers (3)

Jan
Jan on 2 Oct 2011
C = cell(1, 5);
C(:) = {'String'};
  11 Comments
Rob
Rob on 17 Dec 2021
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 on 28 Feb 2024
Hello Jan,
Your elegant solution worked for me using the function strings.

Sign in to comment.


Grzegorz Knor
Grzegorz Knor on 2 Oct 2011
repmat({'filename.mat'},1,5)

dscharf
dscharf on 17 Aug 2023
Edited: Dyuman Joshi on 28 Feb 2024
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.

Tags

Community Treasure Hunt

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

Start Hunting!