Error "Function subindex is not defined for value of struct"
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Hi all,
I'm trying to read in multiple .txt files (each file around 400-900MB) which contain sensor channels channels data.I created a readIn function import_file which gives one output which is struct array of size 1X1 struct with 20 fields and value 1Xno.lines double. This array has all the variables from the data file.
function [Signals] = import_file(filename,startRow)
% Function to read in all channel information from each file.
delimiter = {'\t',' '};
formatSpec = '%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f%f';
fileID = fopen(filename,'r');
dataArray = textscan(fileID,formatSPec,'Delimiter','MultipleDelimsAsOne',true,'EmptyValue',NaN,'HeaderLines',startRow-1,'ReturnOnError',false);
EXPORT = [dataArray{1:end}];
%Defining Individual channels as struct array
Signals.Time = EXPORT(:,2);
.
.
.
.
Signals.n2 = EXPORT(:,21);
fclose(fileID);
clear file ID;
The rest of program is
myfiles = dir('*.txt');
for singlefile = myfiles' % forloop to read in each file
Signals(singlefile) = import_file(file.name,startRow);% storing each file information as a structure inside signal.
end
When I try to run this program I get an error
Function 'subsindex'is not defined for values of class 'struct'
Error in RD_Test_Run(line 69)
Signals(singlefile) = import_files(singlefile.name,startRow);
Could someone please enlighten where I'm going wrong. Thank you in advance.
0 Kommentare
Akzeptierte Antwort
Matt J
am 5 Nov. 2015
Bearbeitet: Matt J
am 5 Nov. 2015
for i=1:length(myfiles)
singlefile = myfiles(i).name % forloop to read in each file
Signals{i}= import_file(singlefile,startRow);
end
3 Kommentare
Walter Roberson
am 6 Nov. 2015
Before the loop you can add
Signals = cell(length(myfiles),1);
but this is probably not going to make a tremendous difference. textscan() just takes time.
Beware that your code is not correct. You have
dataArray = textscan(fileID,formatSPec,'Delimiter','MultipleDelimsAsOne',true'EmptyValue',NaN,'HeaderLines',startRow-1,'ReturnOnError',false);
when you should have
dataArray = textscan(fileID, formatSPec, 'Delimiter', delimiter, 'MultipleDelimsAsOne', true, 'EmptyValue', NaN, 'HeaderLines', startRow-1, 'ReturnOnError',false);
Are you sure you want MultipleDelimsAsOne in conjunction with EmptyValue ?? That makes it difficult to figure out which column a particular value was intended for.
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Characters and Strings finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!