Clear Filters
Clear Filters

Confusion with for loop

1 view (last 30 days)
Mayank Lakhani
Mayank Lakhani on 3 Aug 2015
Commented: Mayank Lakhani on 4 Aug 2015
Below is my code in which i am considering data file fb2010. At the end I have a matrix "resd". Now I want to add another three file fb2020, fb2030, fb2040. The code should be the same but including other three data files. At the end i should have four matrix like "resd"(including resd). So how to apply for loop. I tried to apply but it 's not working. Thanks in advance.
load('fb2010'); % loading the data
x = fb2010(3:1:1502,:);
% y_filt = filter(b,a,x); % filtering the received signal
y_filt= filter(b,a,x,[],2);
%%%%%%% fourier transform
nfft = length(y_filt);
res = fft(y_filt,nfft,2)/nfft;
res2 = res(:,1:nfft/2+1); %%%%taking single sided spectrum
res3 = fft(res2,[],2);
for i = 3:1:1500 %%%%dividing each row by first row.
resd(i,:) = res3(i,:)./res3(1,:);
end

Accepted Answer

Matt J
Matt J on 3 Aug 2015
Edited: Matt J on 3 Aug 2015
Files={'fb2010','fb2020', 'fb2030', 'fb2040'};
for k=1:length(Files);
S=load(Files{i});
x = S.(Files{i})(3:1502,:);
....
for i = 3:1500
resd(i,:,k) = res3(i,:)./res3(1,:);
end
end
  2 Comments
Matt J
Matt J on 3 Aug 2015
Edited: Matt J on 3 Aug 2015
Better. Replace the inner loop
for i = 3:1500
resd(i,:,k) = res3(i,:)./res3(1,:);
end
with a bsxfun operation,
resd(3:1500,:,k ) = bsxfun(@rdivide,res3(3:1500,:),res3(1,:));
Mayank Lakhani
Mayank Lakhani on 4 Aug 2015
Thanks Matt for the Answer.

Sign in to comment.

More Answers (0)

Community Treasure Hunt

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

Start Hunting!