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 commentaire

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

Connectez-vous pour commenter.

 Réponse acceptée

Azzi Abdelmalek
Azzi Abdelmalek le 1 Mai 2016
Modifié(e) : Azzi Abdelmalek le 1 Mai 2016
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 commentaires

Stephen23
Stephen23 le 1 Mai 2016
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 le 1 Mai 2016
That depends on the size of the new data
Ki Lung Chan
Ki Lung Chan le 1 Mai 2016
thank you! I got this

Connectez-vous pour commenter.

Plus de réponses (0)

Catégories

En savoir plus sur MATLAB dans Centre d'aide et File Exchange

Community Treasure Hunt

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

Start Hunting!

Translated by