Incremento mediante un bucle
Publicado por Patricia (8 intervenciones) el 28/02/2014 19:43:46
Hola, estoy haciendo unos calculos de regresión para general una curva espectral. El tipo de datos que tengo incluye una columna con la longitud de onda y otra con la absorbancia:
200 2.479548
201 2.463961
202 2.411377
203 2.36803
204 2.299087
205 2.226782
206 2.143653
207 2.061231
208 1.966193
209 1.876324
210 1.785384
211 1.696724
212 1.604722
213 1.517911
214 1.433491
215 1.350246
216 1.272153
217 1.196794
218 1.125223
219 1.057493
220 0.995423
221 0.938045
222 0.887021
223 0.840384
224 0.799002
225 0.763103
226 0.731112
227 0.703296
228 0.677009
229 0.65272
230 0.63005
231 0.609493
232 0.591237
233 0.574588
234 0.560023
235 0.547221
236 0.536611
237 0.528481
238 0.52166
239 0.515854
240 0.511352
241 0.507155
242 0.503763
243 0.500461
244 0.4974
245 0.49394
246 0.490708
247 0.487254
248 0.483624
249 0.479809
250 0.476233
Yo quiero hacer regresiones lineales entre con un incremento de 20 nm. Es decir que quiero hacer la regresión de 200 a 220, luego de 201 a 221, luego de 202 a 222 y así sucesivamente hasta 700 nm.
La primer columna
A=(200:700)';
La segunda columna son los datos importo mis datos:
B=csvread('absorbancia.csv',2,2);
long=A(1:20);% corto el rango de mi variable independiente A
absorbancias=B(1:20,:) % corto el rango de mi variable dependiente B
Ln=log(absorbancias); % le hago el logaritmo
for i:1:size(Ln,2)
SS200(i,:)=polyfit(long, Ln(:,i), 1);
end
%% con esto genero la regresion y me da un valor
long=A(2:21);% corto el rango de mi variable independiente A
absorbancias=B(2:21,:) % corto el rango de mi variable dependiente B
Ln=log(absorbancias); % le hago el logaritmo
for i:1:size(Ln,2)
SS201(i,:)=polyfit(long, Ln(:,i), 1);
end
Ahora quiero hacerlo corriendo sincronicamente 20 nm, necesito hacer unas 500 veces de 200 a 700nm, Habrá alguna manera más fácil de lograrlo?? Alguna idea?
200 2.479548
201 2.463961
202 2.411377
203 2.36803
204 2.299087
205 2.226782
206 2.143653
207 2.061231
208 1.966193
209 1.876324
210 1.785384
211 1.696724
212 1.604722
213 1.517911
214 1.433491
215 1.350246
216 1.272153
217 1.196794
218 1.125223
219 1.057493
220 0.995423
221 0.938045
222 0.887021
223 0.840384
224 0.799002
225 0.763103
226 0.731112
227 0.703296
228 0.677009
229 0.65272
230 0.63005
231 0.609493
232 0.591237
233 0.574588
234 0.560023
235 0.547221
236 0.536611
237 0.528481
238 0.52166
239 0.515854
240 0.511352
241 0.507155
242 0.503763
243 0.500461
244 0.4974
245 0.49394
246 0.490708
247 0.487254
248 0.483624
249 0.479809
250 0.476233
Yo quiero hacer regresiones lineales entre con un incremento de 20 nm. Es decir que quiero hacer la regresión de 200 a 220, luego de 201 a 221, luego de 202 a 222 y así sucesivamente hasta 700 nm.
La primer columna
A=(200:700)';
La segunda columna son los datos importo mis datos:
B=csvread('absorbancia.csv',2,2);
long=A(1:20);% corto el rango de mi variable independiente A
absorbancias=B(1:20,:) % corto el rango de mi variable dependiente B
Ln=log(absorbancias); % le hago el logaritmo
for i:1:size(Ln,2)
SS200(i,:)=polyfit(long, Ln(:,i), 1);
end
%% con esto genero la regresion y me da un valor
long=A(2:21);% corto el rango de mi variable independiente A
absorbancias=B(2:21,:) % corto el rango de mi variable dependiente B
Ln=log(absorbancias); % le hago el logaritmo
for i:1:size(Ln,2)
SS201(i,:)=polyfit(long, Ln(:,i), 1);
end
Ahora quiero hacerlo corriendo sincronicamente 20 nm, necesito hacer unas 500 veces de 200 a 700nm, Habrá alguna manera más fácil de lograrlo?? Alguna idea?
Valora esta pregunta


0