在 MATLAB 的脚本中将数据作为元胞数组导入
Import data as a cell array in a script in MATLAB
我需要将许多文件的数据作为元胞数组导入 Matlab,然后再对它们执行一些操作。有什么方法可以在脚本中导入数据以自动执行而不是手动执行?
我手动做的是:
-首页 > 导入数据
-选择.txt文件
-作为元胞数组,2 列作为文本。
-列分隔符:逗号。
更新:
这是我的 .txt 文件的一小部分:
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/d-0197.bmp, [329 210 50 51]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/c-0044.bmp, [215 287 59 48]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0114.bmp, [298 244 46 45]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/102.bmp, [243 126 163 143]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0120.bmp, [250 400 48 48]
结果:包含 2 个文本列的元胞数组。
-第一列包含图片路径:
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/d-0197.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/c-0044.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0114.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/102.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0120.bmp'
-第二列包含数组作为文本:
' [329 210 50 51]'
' [215 287 59 48]'
' [298 244 46 45]'
' [243 126 163 143]'
' [250 400 48 48]'
谢谢
试试这个-
T = readtable('fileName.txt','Delimiter',',','ReadVariableNames',false)
您可以将 importdata
. This gives each line in a different cell. You then split each line using regexp
与 'split'
选项一起使用:
y = importdata('filename.txt');
y = regexp(y, ',', 'split'); %// or ', '
y = cat(1, y{:});
我需要将许多文件的数据作为元胞数组导入 Matlab,然后再对它们执行一些操作。有什么方法可以在脚本中导入数据以自动执行而不是手动执行?
我手动做的是:
-首页 > 导入数据
-选择.txt文件
-作为元胞数组,2 列作为文本。
-列分隔符:逗号。
更新: 这是我的 .txt 文件的一小部分:
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/d-0197.bmp, [329 210 50 51]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/c-0044.bmp, [215 287 59 48]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0114.bmp, [298 244 46 45]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/102.bmp, [243 126 163 143]
/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0120.bmp, [250 400 48 48]
结果:包含 2 个文本列的元胞数组。
-第一列包含图片路径:
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/d-0197.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/c-0044.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0114.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/102.bmp'
'/home/camroom/Dropbox/Internship/Matlab/Cascade1/training/positive/rawdata/e-0120.bmp'
-第二列包含数组作为文本:
' [329 210 50 51]'
' [215 287 59 48]'
' [298 244 46 45]'
' [243 126 163 143]'
' [250 400 48 48]'
谢谢
试试这个-
T = readtable('fileName.txt','Delimiter',',','ReadVariableNames',false)
您可以将 importdata
. This gives each line in a different cell. You then split each line using regexp
与 'split'
选项一起使用:
y = importdata('filename.txt');
y = regexp(y, ',', 'split'); %// or ', '
y = cat(1, y{:});