Restrict a column of data by two numerical constraints

1 次查看(过去 30 天)
I am trying to restrict my data from column 3 in the text file (attached) from numbers 11.78 =< x <= 13.25. For some reason, it is including numbers higher than the upper limit set. How would I fix this/ where am I going wrong?
My code is below:
fidi = fopen('virgoclusterrm.txt','rt');
Glxc = textscan(fidi, '%s', 'Delimiter','|');
frewind(fidi)
Glxcs = textscan(fidi, '%s', 'EndOfLine','\r\n');
fclose(fidi);
dlen = 18*fix(length(Glxc{:})/18); % Set Row Length
Glxcr = reshape(Glxc{:}(1:dlen), 18, [])'; % Reshape & Transpose
LIdx=str2double(Glxcr(:,3))>11.77
LIdx=str2double(Glxcr(:,3))<13.25
NewGlxc = Glxcs{:}(LIdx,:); % Rows Of New Array
fido = fopen('virgoclusterrmra.txt','wt')
fprintf(fido, '%s\n', NewGlxc{:});
fclose(fido)

采纳的回答

Sebastian Castro
Sebastian Castro 2015-8-3
So, you have 2 lines that define separate values for LIdx. So, the second line overwrites LIdx from the first line such that you're only meeting half the constraints that you want.
You may want to refactor your indices to tackle both upper and lower limits in the same statement:
LIdx= (str2double(Glxcr(:,3))>11.77) & (str2double(Glxcr(:,3))<13.25)
- Sebastian

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Data Type Conversion 的更多信息

标签

Community Treasure Hunt

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

Start Hunting!

Translated by