我正在尝试将循环中的一系列字符串连接到变量数组中,但结果字符串总是在花括号内。为什么会发生这种情况,如何在没有它们的情况下连接字符串?谢谢
subs = {'abc001' 'abc002' 'abc003' 'abc004'};
for i = 1:size(subs,2)
subject = subs(i);
files_in(i).test = strcat('/home/data/','ind/',subject,'/test_ind_',subject,'.mat');
end
files_in(1)
% ans =
% test: {'/home/data/ind/abc001/test_ind_abc001.mat'}
我希望它是:
test: '/home/data/ind/abc001/test_ind_abc001.mat'
答案 0 :(得分:2)
subs
是一个单元格数组。如果使用()
表示法对其进行索引,则还获取单元格数组。
a = {'1', '2', '3'};
class(a(1))
% cell
要在单元格数组中获取字符串,您需要使用{}
表示法来为其编制索引。
class(a{1})
% char
对单元格数组使用strcat
时,结果将是单元格数组。当您将其与字符串一起使用时,resut将是一个字符串。因此,如果我们使用(k)
切换{k}
,我们会得到您期望的结果。
for k = 1:numel(subs)
subject = subs{k};
files_in(k).test = strcat('/home/data/ind/', subject, '/test_ind_', subject, '.mat');
end
一些附注:
不要将i
用作变量。在MATLAB中使用i
和j
来表示sqrt(-1)
。
建议使用fullfile
来构建文件路径,而不是strcat
。