Append rows to .mat file

How do I append row(s) of data to an existing array in a .mat file. The following works except the 2nd to last line:
tableIt = [1 2 3;4 5 6;7 8 9];
tableMore = [10 11 12];
filename = 'aTable.mat';
data2store = 'tableIt';
more2store = 'tableMore';
save(filename,data2store');
whos('-file',filename);
m = matfile(filename,'Writable',true);
m.tableIt(end+1,:) = more2store;
whos('-file',filename);

4 个评论

save(filename, data2store, '-v7.3');
without the -v7.3, the .mat file would typically default to -v7 and those are not writable.
-7.3 doesn't solve the error message the code above generates:
Error using ScratchPad (line 12)
The size of the right hand side did not match the size of the indexing on the left hand side.
I'm looking for something that does work, do you know an alternative that works?

请先登录,再进行评论。

 采纳的回答

more2store = 'tableMore';
That is a 1 x 9 character vector.
tableIt = [1 2 3;4 5 6;7 8 9];
That is a 3 x 3 double.
m.tableIt(end+1,:) = more2store;
That attempts to store the 1 x 9 character vector into 3 columns of a double. That does not fit.

4 个评论

tableIt is a 3x3 double. I'm then trying to add another row which is a 1x3 double.
No, you are attempting to store the character vector 'tableMore' rather than the contents of the variable tableMore
If you had done
more2store = tableMore;
then it would have worked.
http://www.cs.utoronto.ca/~chechik/courses/csc324/white.html

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Environment and Settings 的更多信息

产品

版本

R2019b

Community Treasure Hunt

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

Start Hunting!

Translated by