2016-07-09 67 views
0

我試圖將一系列字符串連接成一個變量數組,但生成的字符串總是在大括號內。爲什麼會發生這種情況,如何在沒有它們的情況下連接字符串?由於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' 

回答

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

+0

感謝您的回答和旁註!我是matlab新手,所以我仍然選擇這樣的東西。 – Jon