我在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文件中提取字符串。
答案 0 :(得分:1)
使用花括号访问表元素
class PrintDemo {
public void printCount() {
try {
for(int i = 5; i > 0; i--) {
System.out.println("Counter --- " + i );
}
} catch (Exception e) {
System.out.println("Thread interrupted.");
}
}
}
class ThreadDemo extends Thread {
private Thread t;
private String threadName;
PrintDemo PD;
ThreadDemo(String name, PrintDemo pd) {
threadName = name;
PD = pd;
}
public void run() {
synchronized(PD) {
PD.printCount();
}
System.out.println("Thread " + threadName + " exiting.");
}
public void start () {
System.out.println("Starting " + threadName );
if (t == null) {
t = new Thread (this, threadName);
t.start ();
}
}
public void joinInsideThread() throws InterruptedException {
if (t != null){
t.join();
}
}
}
public class TestThread {
public static void main(String args[]) {
PrintDemo PD = new PrintDemo();
ThreadDemo T1 = new ThreadDemo("Thread - 1 ", PD);
ThreadDemo T2 = new ThreadDemo("Thread - 2 ", PD);
System.out.println("1");
T1.start();
System.out.println("2");
T2.start();
// wait for threads to end
try {
System.out.println("3");
T1.joinInsideThread();
System.out.println("4");
T2.joinInsideThread();
System.out.println("5");
} catch (Exception e) {
System.out.println("Interrupted");
}
}
}
或者将其转换为单元格,因为data_tr{i,2} % Get the element of a table rather than data_tr(I,2)
可以获取单元格输入
strcat
答案 1 :(得分:0)
听起来您正在使用某些导入工具(例如this)手动加载数据。您可以通过loading the data programmatically让自己更轻松。这样您就可以根据您正在使用的特定文件格式定制数据加载,并可以更好地控制数据格式。
例如,对于您的给定示例文件,您可以使用xlsread
:
[~, 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
或者您可以使用textscan
:
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