import same variable without overwrite

I try to import one single point from 20 different mat file and save those point into a mat file without overwrite it. However my code keep overwritting it and only display the last value. Here is my code
for k = 1:20
myfilename = sprintf('Image%d.mat', k);
a = load(myfilename);
newimg = (a.img -273);
% The point of plants
i = 100;
j = 84;
% Take the average of itself and all four of its neighboring
% values average each point in array
newimg(i,j) = 0.2*(newimg(i+1,j) + newimg(i-1,j) + newimg(i,j+1) + newimg(i,j-1) + newimg(i,j))
val = newimg(i,j)
newa = length(k);
save('newa.mat','-append','val');
end

1 件のコメント

Stephen23
Stephen23 2016 年 5 月 1 日
Rather than save your variable to the .mat-file on each iteration, simply construct an array with those values, and then save the array once after the loop, something like this:
N = 20;
mat = NaN(1,N); % preallocate
for k = 1:N;
...
mat(k) = val;
end
save(..., 'mat')

サインインしてコメントする。

 採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2016 年 5 月 1 日
編集済み: Azzi Abdelmalek 2016 年 5 月 1 日

0 投票

You are using the same variable name. If you want to append your new data, you have to store them in a new variable name. But its better if you create a cell array then each update of your data, the size of your cell array will increase
For example
for k=1:3
a{k}=randi(4,4);
save('file','a','-append')
end

3 件のコメント

Stephen23
Stephen23 2016 年 5 月 1 日
There is no need to use a cell array, a simple numeric array will work perfectly, and is simpler. Some preallcoation would be nice though!
Azzi Abdelmalek
Azzi Abdelmalek 2016 年 5 月 1 日
That depends on the size of the new data
Ki Lung Chan
Ki Lung Chan 2016 年 5 月 1 日
thank you! I got this

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

ヘルプ センター および File ExchangeMATLAB についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by