How do I store data that meet conditions of an if statement
9 visualizaciones (últimos 30 días)
Mostrar comentarios más antiguos
Hi All,
I'm slightly struggling trying to get my code to work, and I hope someone can point me in the right direction.
Very briedly, I have two vectors, 'xx' and 'yy'. I created a matrix using these two vectors, 'xy'. If xy(:,1) is ==1, I would like to store the corresponding cell in xy(:,2) in a seperate variable, 'data'. Otherwise, if the logical expression = 0, I'd like that cell to be a NaN
xx=[-3; -3; -3; -3; -3; -3; 1; -2; -2; -3; -3; -2; 1; 1; 1; -2; 1; 1; ];
yy=[26.28; 36.96; 90.00; 90.00; 90.00; 90.00; 27.85; 29.97; 47.03; 90.00; 67.22; 78.87; 19.60; 9.00; 2.00; 3.41; 1.88; 2.50];
xy=[xx yy];
for i=1:size(xy(:,1),1)
if xy(:,1)==1
data=xy(:,2);
else
data=NaN;
end
end
Thanks in advance.
Cheers
0 comentarios
Respuesta aceptada
Jan
el 1 de Feb. de 2021
Editada: Jan
el 1 de Feb. de 2021
xx = [-3; -3; -3; -3; -3; -3; 1; -2; -2; -3; -3; -2; 1; 1; 1; -2; 1; 1; ];
yy = [26.28; 36.96; 90.00; 90.00; 90.00; 90.00; 27.85; 29.97; ...
47.03; 90.00; 67.22; 78.87; 19.60; 9.00; 2.00; 3.41; 1.88; 2.50];
xy = [xx yy];
data = nan(size(xx));
match = (xx == 1);
data(match) = xy(match, 2);
This "vectorized" method is faster and nicer than a loop. But with a loop:
data = nan(size(xy, 1), 1);
for i = 1:size(xy, 1) % better than: size(xy(:,1),1)
if xy(i, 1) == 1
data = xy(i, 2);
end
end
5 comentarios
dpb
el 2 de Feb. de 2021
I posted a demonstration of what happens with dynamic allocation just a day or so ago at<Comment_1298378>
Más respuestas (2)
dpb
el 1 de Feb. de 2021
Don't need any loops nor the explicity xy array that is duplicate of existing data.
data=nan(size(x,1),2); % initialize to NaN
ix=(xx==1); % logical addressing vector of wanted locations
data(ix,:)=[xx(ix) yy(ix)]; % set data values
Alternatively,
data=[xx yy]; % initialize to data
data(data(:,1),:)=nan; % set unwanted values to NaN
Ver también
Categorías
Más información sobre Loops and Conditional Statements en Help Center y File Exchange.
Productos
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!