How to convert zero to 'Nan' for multiple dot mat file containing 1d data

조회 수: 1 (최근 30일)
Yared Daniel
Yared Daniel 2021년 5월 25일
댓글: Jan 2021년 5월 25일
I have several dot mat files, each files contains 1d array data, some of the data has zero value, and I want to convert zero values to ‘Nan’ for each dot mat files using for loop. I did for a single file using the following commands and it successfully converted zeros to Nan.
>> clear
>> load('NormFHR1.mat')
>> A=x;
>> A(A ==0) = NaN;
>> save('MRN1','A')
However performing for each file one by one like this is a kind of tiresome since I have thousands of files. Please forward any trick to solve this problem.
Thanks for your Help

채택된 답변

Matt J
Matt J 2021년 5월 25일
편집: Matt J 2021년 5월 25일
fnames=ls('NormFHR*.mat');
for i=1:size(fnames,1)
fn=fnames(i,:);
s=load(fn);
A=s.x;
A(~A)=nan;
save( strrep(fn,'NormFHR','MRN'), 'A')
end
  댓글 수: 4
Jan
Jan 2021년 5월 25일
@Matt J: Look into the source code of ls() . It calls dir() also and convertes the field "name" to a char. The output is padded, such that all lines have the same number of columns. Onbatining the lines later forward the padded char vectors as input to load. Therefore ls is löess efficient than using the unpadded char vectors directly:
fileList = dir('NormFHR*.mat');
for k = 1:numel(fileList)
fn = fileList(k).name;
...

댓글을 달려면 로그인하십시오.

추가 답변 (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