I have sequential x_y grid text files each with column 1 as wavenumber and column 2 intensity outputs. I am looking to extract position (0_0, 0_1, 0_2 etc), peak position (wavenumber), peak intensity as a 3 column matrix from my nested for loop.
2 views (last 30 days)
Show older comments
Carmen Makepeace on 15 Aug 2017
Answered: Faiz Gouri on 17 Aug 2017
Currently the code I have is: file_address = 'C:\Users\Desktop\.....\1.5step 45mins\run 51 extracted from labspec\'
x_grid = [0:1:1];
y_grid = [0:1:5];
run_name = 'run51__'
x_size = length(x_grid);
y_size = length(y_grid);
x_y = x_size*y_size;
output = zeros(x_y, 2);
for i = 1:x_size
for j = 1: y_size
run_number1 = strcat(num2str(a(i)),'_',num2str(b(j)));
run_number2 = strcat(run_name,run_number1);
address = strcat(file_address,run_number,'.txt'); %address 'C:\Users\....\..\..\run27_0_0.txt
run = (dlmread(address)); %open and read run27_0_0.txt
wavenumber = run(:,1);
intensity = run(:,2);
pIind = find(peakI);
basically I want to extract per dlmread a matrix with [run_number1 peak_wavenumber peakI]
Any help would be greatly appreciated. I cant seem to get the syntax right for the nested for loop.
output(i,j) = output(run_number1 peak_wavenumber peakI)????
(I appreciate it is not indented properly here)
Faiz Gouri on 17 Aug 2017
I understand that you would like to read values from different files with similar syntax(wavenumber intensity), and store values corresponding to maximum intensity into a single matrix. In order to do so you can create an empty matrix with 3 columns and desired number of rows and update it row-by-row every time you read from the file.
results_matrix = zeros(x_y, 3);
for i = 1:x_size
results_matrix(i,:)= [run_number1 peak_wavenumber peakI]
Hope this helps!
Find more on Standard File Formats in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!Start Hunting!