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 个评论

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')

请先登录,再进行评论。

 采纳的回答

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 个评论

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!
That depends on the size of the new data

请先登录,再进行评论。

更多回答(0 个)

类别

帮助中心File Exchange 中查找有关 Logical 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by