String 如何在matlab中从表格单元格中提取字符串
我在Matlab中导入了一个csv文件String 如何在matlab中从表格单元格中提取字符串,string,matlab,csv,cell,String,Matlab,Csv,Cell,我在Matlab中导入了一个csv文件data\u tr 1, abc 2, def ... 现在打算在我的代码中使用字符串 save_location = strcat('trial\tr_',data_tr(i,2),'.png'); 这导致了以下错误: 输入必须是字符向量、字符向量的单元格数组或字符串数组 变量data\u tr(i,2)被视为1x1表而不是字符串 在看到一些答案(一)后,我还尝试了以下方法: da = data_tr(i,2); h = [da{:}]; save_l
data\u tr
1, abc
2, def
...
现在打算在我的代码中使用字符串
save_location = strcat('trial\tr_',data_tr(i,2),'.png');
这导致了以下错误:
输入必须是字符向量、字符向量的单元格数组或字符串数组
变量data\u tr(i,2)
被视为1x1表而不是字符串
在看到一些答案(一)后,我还尝试了以下方法:
da = data_tr(i,2);
h = [da{:}];
save_location = strcat('trial\tr_',h,'.png');
但这显示了一个订阅错误:
使用main(第14行(即第h行=[da{:}];)时出错)
不能使用线性索引(一个下标)或多维索引(三个或更多)为表下标
下标)。使用行下标和变量下标
有人能帮我从csv文件中提取字符串吗。或者使用大括号访问table元素
data_tr{i,2} % Get the element of a table rather than data_tr(I,2)
或者将其转换为单元格,因为strcat可以接受单元格输入
data_tr_cell = table2cell(data_tr);
data_tr_cell(i, 2);
听起来像是使用某种导入工具(例如)手动加载数据。相反,你可能会让事情变得更容易。这将使您能够根据正在使用的特定文件格式定制数据加载,并对数据格式有更多的控制 例如,对于给定的示例文件,您可以使用: 或者您可以使用:
您是否尝试了什么并使用了
save_location=strcat('trial\tr_',data_tr{i,2},.png')代码>?是的,我使用了帮助strcat。它接受字符串作为输入。此外,strcat(int2str(28),'trial.png')
工作正常。问题是da=data_tr(i,2)视为1x1表(如var部分所示),我不知道如何从中提取字符串。您可以尝试使用data\u tr.Var2{i,1}
。该表将自动将Var1
、Var2
等指定为表中的变量名,因此第二列应该是Var2
。这是有效的。我转到导入数据部分,在导入时,将列重命名为col_1和col_2<代码>数据列1(i)
是正确的语法。谢谢!解析请实际阅读我链接的文档。()
和{}
之间有区别。谢谢!我也不知道。后面的方法更有用,因为**strcat**的输出也是单元格。我对数据使用了csvread,但为了重命名列,我手动导入了表。无论如何,它会创建相同的300x2表,我不知道如何使用大括号访问字符串。不过谢谢你的建议!
[~, strData] = xlsread('data_tr.csv'); % Load string data into a cell array
strData = strtrim(strData); % Remove leading or trailing blanks
...
save_location = strcat('trial\tr_', strData{i}, '.png'); % Access a string
fid = fopen('data_tr.csv', 'r'); % Open file for reading
C = textscan(fid, '%*d%s', 'Delimiter', ','); % Read just the strings
fclose(fid); % Close file
strData = C{1}; % Remove cell encapsulation
...
% Use the same way as above