Matlab连接变量字符串,不带花括号

时间:2016-07-09 17:14:38

标签: arrays string matlab

我正在尝试将循环中的一系列字符串连接到变量数组中,但结果字符串总是在花括号内。为什么会发生这种情况,如何在没有它们的情况下连接字符串?谢谢

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'

1 个答案:

答案 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

一些附注:

  1. 不要将i用作变量。在MATLAB中使用ij来表示sqrt(-1)

  2. 建议使用fullfile来构建文件路径,而不是strcat