How can I extract arrays from a structure?
1 回表示 (過去 30 日間)
古いコメントを表示
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
0 件のコメント
回答 (2 件)
Alessandro Renna
2013 年 5 月 11 日
編集済み: Alessandro Renna
2013 年 5 月 11 日
try to use cell variable for Q as:
Q{length(vals(i).data(:,7)),i}= vals(i).data(:,7)
0 件のコメント
Cedric
2013 年 5 月 12 日
編集済み: Cedric
2013 年 5 月 12 日
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
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Structures についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!