Restrict a column of data by two numerical constraints
2 次查看(过去 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)
0 个评论
采纳的回答
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 Center 和 File Exchange 中查找有关 Environment and Settings 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!