How can I extract arrays from a structure?

3 views (last 30 days)
Borja
Borja on 10 May 2013
Hi all,
This is my problem:
I load several files using the command 'dir'. Then, I import the data sheet (numbers + headers) with the command 'importdata'. The result is a structure (number of objects imported x 1).
The data are matrices of (602,603 or 604 x 9). I want to extract certain columns of the data sheets and I use a for loop but it gives this error:
Subscripted assignment dimension mismatch.
Error in loading (line 12)
Q(length(vals(i).data(:,7)),i)= vals(i).data(:,7)
Here I attach the piece of code:
clc;clear all;
% Loads the files of the selected directory
loadfiles = dir('*.txt');
% Preallocation of the variable which will contain the data
vals = [];
Q = [];
for i = 1:length(loadfiles)
% Select the "useful" part of the structure (data)
vals = [vals; importdata(loadfiles(i).name)];
% Select the seventh column of each data sheet
Q(length(vals(i).data(:,7)),i)= vals(i).data(:,7)
end
thanks in advance

Answers (2)

Alessandro Renna
Alessandro Renna on 11 May 2013
Edited: Alessandro Renna on 11 May 2013
try to use cell variable for Q as:
Q{length(vals(i).data(:,7)),i}= vals(i).data(:,7)

Cedric
Cedric on 12 May 2013
Edited: Cedric on 12 May 2013
There is no such thing as vals(i).data.
If you wanted to save only the 7 relevant columns, you could update a little your code as follows:
cId = [1 2 3 4 6 7 9] ; % ID of the 7 relevant columns.
Q = [] ;
for i = 1 : length(loadfiles)
buffer = importdata(loadfiles(i).name) ; % Temporary storage.
Q = [Q; buffer.data(:,cId)] ; % Append only 7 relevant cols.
end

Categories

Find more on File Operations in Help Center and File Exchange

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!