Problem concatenating two strings

2 次查看(过去 30 天)
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?

采纳的回答

dpb
dpb 2022-7-27
编辑:dpb 2022-7-27
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: []
>>

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Structures 的更多信息

产品


版本

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by