【发布时间】:2018-07-15 22:51:04
【问题描述】:
我在 Matlab 中导入了一个 csv 文件 data_tr,
1, abc
2, def
...
现在打算在我的代码中使用字符串
save_location = strcat('trial\tr_',data_tr(i,2),'.png');
这导致了以下错误:
输入必须是字符向量、字符向量元胞数组或字符串数组。
变量 data_tr(i,2) 被认为是一个 1x1 表而不是字符串。
看了一些答案(this一),我也试过这个:
da = data_tr(i,2);
h = [da{:}];
save_location = strcat('trial\tr_',h,'.png');
但这显示了一个下标错误:
使用 main 时出错(第 14 行(即第 h=[da{:}];) 行)
您不能使用线性索引(一个下标)或多维索引(三个或更多 下标)。使用行下标和变量下标。
谁能帮我从 csv 文件中提取字符串。
【问题讨论】:
-
你试过documentation tells you和使用
save_location=strcat('trial\tr_',data_tr{i,2},'.png');吗? -
是的,我使用了 help strcat。它将字符串作为输入。此外
strcat(int2str(28),'trial.png')工作正常。问题是da=data_tr(i,2);被 matlab 视为 1x1 表(显示在 var 部分),我不知道如何从中提取字符串。 -
您可以尝试使用
data_tr.Var2{i,1}。该表将自动将Var1、Var2等分配为表中的变量名,因此您的第二列应为Var2。 -
那行得通。我去了导入数据部分,在导入时,将列重命名为 col_1 和 col_2。
data_tr.col_1(i)是正确的语法。非常感谢! 已解决 -
请实际阅读我链接的文档。
()和{}是有区别的。