error message 'char'.how to solve?
Mostrar comentarios más antiguos
function [EPClist,data]=extraction_data(Nomfichier)
dummy=importfile(Nomfichier);
j=1;
for i=1:height(dummy)
if dummy.OperationResult(i)==' Read OK'
data_raw(j,1)=dummy.Date(i);
data_raw(j,2)=dummy.EPC(i);
data_raw(j,3)=dummy.ReadData(i);
j=j+1;
end
end
clear dummy
EPClist=unique(data_raw(:,2));
Nb_capteur=length(EPClist);
data=cell(1,Nb_capteur);
for i=1:Nb_capteur
k=1;
for j=1:length(data_raw)
if data_raw(j,2)==EPClist(i)
%data{i}(k,1)=data_raw(j,1);
%data{i}(k,1)=0;
data{i}(k,1)=hex2dec(data_raw{j,3}(5:8));
temphexa=data_raw{j,3}(9:12);
if temphexa(1)=='F'
data{i}(k,2)=1/100*(hex2dec(temphexa)-hex2dec('FFFF')+1);
else
data{i}(k,2)=1/100*hex2dec(temphexa);
end
k=k+1;
end
end
EPClist{i}=EPClist{i}(end-3:end);
end
Error message:
Undefined function 'importfile' for input arguments of type 'char'.
Error in extraction_data (line 3)
dummy=importfile(Nomfichier);
Error in detect_palier (line 3)
[EPC,B]=extraction_data(titre);
Error in extract_palier (line 23)
[EPC,pression,temperature]=detect_palier(titre,table_delete);
1 comentario
Luca Ferro
el 19 de Abr. de 2023
importfile is not a matlab built-in function, could you share its code or where you have taken it from?
Respuestas (1)
Walter Roberson
el 19 de Abr. de 2023
0 votos
The function importdata has an option to generate a function that will import other files using the same configuration. It is common for the generated function to be called importfile . But it is not part of MATLAB; it is the result of someone using importdata() and asking to save the associated code.
These days, looking at the imported data, you should probably instead use readtable
6 comentarios
md sazzad
el 24 de Abr. de 2023
Walter Roberson
el 24 de Abr. de 2023
Your existing for i=1:height(dummy) loop would be fine if you were to use readtable, with the exception that you should change the test to
if dummy.OperationResult(i)==" Read OK"
Walter Roberson
el 24 de Abr. de 2023
Rewriting to use readtable:
function [EPClist,data]=extraction_data(Nomfichier)
dummy = readtable(Nomfichier);
j=1;
for i=1:height(dummy)
if strtrim(dummy.OperationResult(i)) == "Read OK"
data_raw(j,1)=dummy.Date(i);
data_raw(j,2)=dummy.EPC(i);
data_raw(j,3)=dummy.ReadData(i);
j=j+1;
end
end
clear dummy
EPClist=unique(data_raw(:,2));
Nb_capteur=length(EPClist);
data=cell(1,Nb_capteur);
for i=1:Nb_capteur
k=1;
for j=1:length(data_raw)
if data_raw(j,2)==EPClist(i)
%data{i}(k,1)=data_raw(j,1);
%data{i}(k,1)=0;
data{i}(k,1)=hex2dec(data_raw{j,3}(5:8));
temphexa=data_raw{j,3}(9:12);
if temphexa(1)=='F'
data{i}(k,2)=1/100*(hex2dec(temphexa)-hex2dec('FFFF')+1);
else
data{i}(k,2)=1/100*hex2dec(temphexa);
end
k=k+1;
end
end
EPClist{i}=EPClist{i}(end-3:end);
end
This has three differences compared to your original:
- changed importfile() to readtable()
- changed ' Read OK' to "Read OK"
- added strtrim()
I wanted to account for the possibility that when you used readtable() that possibly the leading space in ' Read OK' might not be present. Either way, whether it is or is not present, this code should work.
There is one potential problem, though: with readtable() the Date might be read as a datetime object rather than as numeric; if so then you would not be able to mix it in with numeric objects. But possibly it will come across as a char vector or as a cell array of char vectors or as a string... it would be easier if we had an extract of a file to test with.
md sazzad
el 25 de Abr. de 2023
md sazzad
el 25 de Abr. de 2023
Walter Roberson
el 25 de Abr. de 2023
You have to pass in a file name.
Categorías
Más información sobre Calendar en Centro de ayuda y File Exchange.
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!