Database 使用matlab导入向导
我制作了这个data.txt文件,并使用导入向导将其导入matlab。 结果是: 这个表是我的数据库,我想按列搜索每个变量。我使用strread,因为这样可以搜索列,例如: var1=strreadVarName121,1,'%d',分隔符','|' 我在脚本中使用stread编写了几行代码,然后运行它。当我检查工作区var1和包含stread result的其他变量是否丢失,并在命令窗口中键入它们时,我会看到:未定义的函数或变量“End”。我在命令窗口中键入sttread,并在data.txt中使用变量,得到了结果,但在运行脚本时它不起作用。我不明白出了什么问题?我正在使用MatlabR2013A,有一条警告说:不建议使用strread。改用文本扫描。我不能用textscan做同样的事情,而且stread在工作区中编写时也能正常工作。我不知道是什么问题。你能提供线索吗 编辑: 这是密码 注:我正在编写一个基于ear的生物识别系统,数据库是从图像1到5中提取的数据。这是代码的分类部分:Database 使用matlab导入向导,database,matlab,import,Database,Matlab,Import,我制作了这个data.txt文件,并使用导入向导将其导入matlab。 结果是: 这个表是我的数据库,我想按列搜索每个变量。我使用strread,因为这样可以搜索列,例如: var1=strreadVarName121,1,'%d',分隔符','|' 我在脚本中使用stread编写了几行代码,然后运行它。当我检查工作区var1和包含stread result的其他变量是否丢失,并在命令窗口中键入它们时,我会看到:未定义的函数或变量“End”。我在命令窗口中键入sttread,并在data.txt
Nbcoordinates = vertcat(BEcell{:,1});
Necoordinates = vertcat(BEcell{:,2});
import DATA.txt.*; % import our data set
for i=1:5
token1 = 0; token2 = 0; token3 = 0; token4 = 0; token5 = 0; token6 = 0; token7 = 0;
if(VarName1(i, 1) == V{1,1}(1,2) && VarName3(i, 1) == V{1,2}(1,2) && VarName5(i,1) == V{1,3}(1,2) && VarName2(i,1) == V{1,1}(1,3) && VarName4(i,1) == V{1,2}(1,3) && VarName6(i,1) == V{1,3}(1,3))
% Check number of endings for each component
numberofendings = strread(VarName10{i,1}, '%d', 'delimiter', '|');
for j=1:size(Ne,1)
if(numberofendings(j,1)~=Ne(j,1))
break;
end
end
if(j >= size(Ne,1))
token1 = 1;
end
% check number of bifurcations for each components
numberofbifurcations = strread(VarName11{i,1}, '%d', 'delimiter', '|');
for j=1:size(Nb,1)
if(numberofbifurcations(j,1) ~= Nb(j,1))
break;
end
end
if(j >= Nb)
token2 = 1;
end
% Check Intersections1,2,3 Cordinates
Intercoordinate1 = strread(VarName7{i,1}, '%f', 'delimiter', '|');
m = 1;
for j=1:NI1
if((Intersection1(j, 1) ~= Intercoordinate1(m,1)) || (Intersection1(j, 2) ~= Intercoordinate1(m+1,1)))
break;
end
m = m + 2;
end
if(j >= NI1)
token3 = 1;
end
Intercoordinate2 = strread(VarName8{i,1}, '%f', 'delimiter', '|');
m = 1;
for j=1:NI2
if((Intersection2(j, 1) ~= Intercoordinate2(m,1)) || (Intersection2(j, 2) ~= Intercoordinate2(m+1,1)))
break;
end
m = m + 2;
end
if(j >= NI2)
token4 = 1;
end
Intercoordinate3 = strread(VarName9{i,1}, '%s', 'delimiter', '|');
m = 1;
for j=1:NI3
bi1 = cell2mat(Intercoordinate3(m, 1));
bi2 = cell2mat(Intercoordinate3(m + 1, 1));
if((Intersection3(j, 1) ~= str2num(bi2)) || (Intersection3(j, 2) ~= str2num(bi2)))
break;
end
m = m + 2;
end
if(j >= NI3)
token5 = 1;
end
% Check endings coordinate of each component
Endcoor = strread(VarName12{i,1}, '%d', 'delimiter', '|');
m = 1;
for j=1:sum(Ne)
en1 = Endcoor(m, 1);
en2 = Endcoor(m + 1, 1);
if((Necoordinates(j, 1) ~= en1) || (Necoordinates(j, 2) ~= en2))
break;
end
m = m + 2;
end
if(j >= sum(Ne))
token6 = 1;
end
% check bifurcation coordinates of each component
Bifcoor = strread(VarName13{i,1}, '%d', 'delimiter', '|');
m = 1;
for j=1:sum(Nb)
en1 = Bifcoor(m, 1);
en2 = Bifcoor(m + 1, 1);
if((Nbcoordinates(j, 1) ~= en1) || (Nbcoordinates(j, 2) ~= en2))
break;
end
m = m + 2;
end
if(j >= sum(Nb))
token7 = 1;
end
if(token1 ==1 && token2 == 1 && token3== 1 && token4 == 1 && token5 == 1 && token6== 1 && token7==1 )
disp(['This image is a member of Class ',num2str(i)]);
break;
end
end
end
if(token1 == 0 || token2 == 0 || token3 == 0 || token4 == 0 || token5 == 0 || token6== 0 || token7==0)
disp('Doesn;t exist in the data base ');
end
end
你能给我们提供代码吗?你在哪一行得到错误?我在运行代码后没有得到错误。问题是,像var1这样由strread赋值的变量不会出现在工作区中,所以在命令窗口中键入它们会给我一个错误。而且我没有得到正确的结果。无论图像输入如何,每次我都会得到“数据库中不存在”。代码中没有var1。var1是代码上方注释中提到的一个示例。