Problem concatenating two strings

2 views (last 30 days)
I have three files (attached). I need the for loop to extract the part of each file name between the hypens into separate fields of the structure data_vel. Here is my script:
data_vel{1}.files = dir(fullfile(pwd,'*.txt'));
j=1;
for j = 1:length(data_vel{1}.files)
data_vel{1}.file_name{j,1} = data_vel{1}.files(j).name;
data_vel{1}.id{j,1} = extractBetween(data_vel{1}.file_name{j},'-','-');
data_vel{1}.field_name(j) = strcat('loc_',data_vel{1}.id(j));
data_vel{1}.(data_vel{1}.field_name(j)).velocity_exist = 'yes';
end
I am getting an error, which I think is caused by this line
data_vel{1}.field_name(j) = strcat('loc_',data_vel{1}.id(j));
I want this line to add "loc_" to the beginning of each data_vel{1} value. So, I want "loc_1A", "loc_3B", and "loc_9C" to be created, which I would then assign as field names in the data_vel{1} structure. Currently, This line produces a 1x2 cell instead of a 1x1 cell. I haven't been able to figure out how to create a 1x1 structure.
Can someone please help?

Accepted Answer

dpb
dpb on 27 Jul 2022
Edited: dpb on 27 Jul 2022
I hate struct, but if I understand the Q?, then try something like --
d=dir(fullfile(pwd,'test-*.txt'));
fn=strcat('loc_',extractBetween({d.name},'-','-'));
fnv=[fn; cell(1,numel(fn))];
deal_vec=struct(fnv{:});
which results in
>> deal_vec =
struct with fields:
loc_1A: []
loc_3B: []
loc_9C: []
>>
  1 Comment
Allen Hammack
Allen Hammack on 28 Jul 2022
You solved the problem! Thank you so much!

Sign in to comment.

More Answers (0)

Categories

Find more on Structures in Help Center and File Exchange

Products


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by