concatenate structs and then plot a specified column
1 次查看(过去 30 天)
显示 更早的评论
I have the following folder, named Dati_Finali:
![folder.JPG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/242771/folder.jpeg)
Each mat file contains a single variable named dati_finali, see the following figure, with different number of rows but equal number of columns:
![cell.JPG](https://www.mathworks.com/matlabcentral/answers/uploaded_files/242772/cell.jpeg)
I would like to concatenate all the dati_finali cells vertically and then plot a specified column.
How can I do this? Thanks
0 个评论
回答(1 个)
Adam Danz
2019-10-15
编辑:Adam Danz
2019-10-15
Use dir() to list all files in the directory.
Loop through each file and load in the variable using load(filename,variables)
From within your loop you can vertically concatenate like so
C = [];
for i = 1:numberOfFiles
vars = load('filename','dati_finali')
C = [C;vars.dati_finali];
% ^ vertical concatenation
end
Then plot colun number 'n' by
plot(C(:,n))
If you have trouble putting any of this together, feel free to comment below and include the code.
6 个评论
Adam Danz
2019-10-15
编辑:Adam Danz
2019-10-16
"I want to delete the first row of the uploaded matrices, except for the first one. "
That's what conditional statements are for.
for i=3:4
vars = load(file(i).name,'dati_finali')
if i==3 % <--3 because your i-loop starts with 3
Cnew = vars.dati_finali;
else
Cnew = vars.dati_finali(2:end,:);
end
C = [C; Cnew];
end
About your cell array, what's stored in that array? Are they all numbers or is there a mix of numbers and strings/characters or other stuff? The solution for plotting the n_th column will depend on what's in those arrays.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 File Operations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!