How to save specific rows of a Cell Array?
5 次查看(过去 30 天)
显示 更早的评论
Hi,
I have a cell array O which stores the output of an iterative algorithm. After each 1000 iteration, I want to save the last 1000 rows of O in a .mat file and append it to the previously saved O,
O is a 20000x2 cell array. Each cell in the first column consists of a 95x4 cell which again consists of 1x5 cells. The second column is a 1x1 matrix.
In the 1000th iteration, I want to save the first 1000 rows of O in a .mat file.
In the 2000th iteration, I want to save the second 1000 rows of O (1001th row to 2000th row) and append it to the previously saved .mat file.
In the 3000th iteration, I want to save the third 1000 rows of O (2001th row to 3000th row) and append it to the same .mat file.
and so on......
I use the following code:
if rem(it,1000) == 0
save('O.mat',O(it-999:it), '-append');
end
and I receive the following error:
Can someone please help me with this?
Error using save
Must be a string scalar or character vector.
Error in HMainCode (line 90)
save('O.mat',O(it-999:it), '-append');
0 个评论
采纳的回答
Cris LaPierre
2021-1-8
编辑:Cris LaPierre
2021-1-8
When using save, the second input must be a variable name, not data. The variable name is text (string scalar or character vector.
Here is a description of what -append does from the save documentation page.
save(filename,variables,'-append') adds new variables to an existing file. If a variable already exists in a MAT-file, then save overwrites it with the value in the workspace.
For ASCII files, '-append' adds data to the end of the file.
6 个评论
Cris LaPierre
2021-1-9
This example worked for me.
C=1:100;
save C.mat C
m = matfile('C.mat','Writable',true);
for a=2:5
C(((a-1)*100+1):100*a) = (C(end)+1):100*a;
m.C= [m.C C(end-99:end)];
end
% View last 10 values
z = m.C;
z(end-10:end)
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Workspace Variables and MAT-Files 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!