save values in array in a loop

I want to save a value calculated inside a loop in an array. Is it possible? for example:
for i=1:10
s=a+b;
a(i)=s;
end
a
ans=
a=[23 45 678 21 34 134 34 56 11 34]
how to save s in an array so that this loop give an array containing the calculated values?

3 Kommentare

Stephen23
Stephen23 am 21 Mär. 2015
Bearbeitet: Stephen23 am 21 Mär. 2015
It is not clear what you are trying to do. Which variables do you already know the values of? What are the values of a and b ? Is the operation just a simple addition?
You should consider vectorizing the calculation rather than doing this in a loop. This would likely be neater and faster code!
this loop is caluculation meanGL. after loop ends i can only access meanGL of last spot .i want to save meanGL of all spots in a way that after calculation i can access meanGL of all spots.
for k = 1 : numberOfSpots
thisSpotPixels = SpotMeasurements(k).PixelIdxList; % Get list of pixels in current blob.
meanGL = mean(i(thisSpotPixels)); % Find mean intensity
end
Thanks in advance
Debasish Roy
Debasish Roy am 3 Feb. 2018
first of all make a script like this, then run it. You will get your answer i hope.
clear all clc
x = []; y = []; k =[]; f = []; for i= 1:4 fprintf('Enter the temperature of day %d \n' ,i ); s = input(' in celcius '); x(i) = s; y(i) = i; end k = x+273; f = x*9/5 + 32; plot( y, x , '-R', y , f ,'-G' ,y ,k, ' -B')

Melden Sie sich an, um zu kommentieren.

Antworten (2)

Konstantinos Sofos
Konstantinos Sofos am 21 Mär. 2015

15 Stimmen

x = [] % initialize your matrix/vector
for i=1:10
% do something useful
s=a+b
x = [x,s];
end

3 Kommentare

Stephen23
Stephen23 am 21 Mär. 2015
Bearbeitet: Stephen23 am 22 Mär. 2015
There are multiple issues with this code:
  • no array preallocation: every loop iteration is going to increase the size of the variable x, which means MATLAB has to check if it still fits in the given memory, and move it if it doesn't.
  • concatenation instead of indexing: rather than concatenating s onto x with every iteration, it would be better to simply index into x and assign the values of s.
  • the name of the loop variable i shadows the inbuilt names of the imaginary unit. Do not use i or j for variable names.
Rather than learning poor code practices like this, you should consider vectorizing the calculation, which is what MATLAB themselves advise for writing fast and neat code, and will expand neatly to larger data sizes.
As a beginner it is better to learn good code practices from the start, rather than learning poor habits and trying to change them later.
Konstantinos Sofos
Konstantinos Sofos am 21 Mär. 2015
More or less I agree with you...but here we do not have any performance issue question...just a way to keep the values ;)
hemasai proddutur
hemasai proddutur am 7 Jul. 2021
d = 0;
for t=1:10000
d = d+0.1;
end
i want to store the values in array in the loop [0.1 -----------------1000]

Melden Sie sich an, um zu kommentieren.

Anil Kumar
Anil Kumar am 22 Jun. 2022

2 Stimmen

may be helpful for begginers
x1=[];
x2=[];
a=[2 4 6 7 3];
b=[1 9 7 5 8];
for ii=1:5
s=a(ii)+b(ii);
x1=[x1,s];%output in a row
x2=[x2;s];%output in a column
end

Kategorien

Mehr zu Loops and Conditional Statements finden Sie in Hilfe-Center und File Exchange

Gefragt:

am 21 Mär. 2015

Beantwortet:

am 22 Jun. 2022

Community Treasure Hunt

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

Start Hunting!

Translated by