Введение: довольно новое для Matlab, происходящее из среды Mathematica.

Вопрос: Мне нужно рассчитать на основе (x, y) 2D-данных и построить то же самое с ответом из расчета, показанным на каждом графике. Предполагая, что у меня есть 10 2D-массивов, для которых требуется вычисление FWHM, и ответ FWHM записан для всех из них и сохранен.

Код ниже для функции FWHM:

function width = fwhm(x,y)% Define function for FWHM at 50%
  y = y / max(y); % Normalize to 1 so that half max=0.5
  N = length(y); % Max length of Y
  MicroscopeMag=10; % Magnification of objective
  PixelWidth=7.8; % Pixel Pitch is 7.8 Microns - Hamamatsu.
  %------- identifies the centre of the peak ---------------%
      [~,centerindex] = max(y);% Find center peak and coordinate
  %------- Identifies the last index position before half-maximum ------%
  %----- Have a range containing the leading edge of the signal -----%
  i = 2;
  while sign(y(i)-0.5) == sign(y(i-1)-0.5) %trying to see the curve raise
      i = i+1;
  end
  %-----Interpolate the exact point(s) where the signal's value would be 0.5-----%
  %----- The next 2 lines are an attempt to determine in fractions of an
  %Index exactly where the line would cross the 0.5 value. 
  %Simple linear interpolation -----%
  interp = (0.5-y(i-1)) / (y(i)-y(i-1)); 
  %(gives us the delta_y between the two values either side)/(shortfall)
  %=linearly interpolate how far between the two index positions we should go to hit exactly 0.5
  tlead = x(i-1) + interp*(x(i)-x(i-1));
  % Works out the corresponding delta_x, which gives you the actual distance in terms of the timebase.
  i=centerindex+1;  
  %------- start search for next crossing at center--------------------%
  %------- Repeat process for trailing edge --------------------%
  while ((sign(y(i)-0.5) == sign(y(i-1)-0.5)) && (i <= N-1))
      i = i+1;
  end
  if i ~= N
      interp = (0.5-y(i-1)) / (y(i)-y(i-1));
      ttrail = x(i-1) + interp*(x(i)-x(i-1));
  % Lateral Magnification x Pixel pitch of 7.8 microns.
      width=((ttrail - tlead)/MicroscopeMag)*PixelWidth; 
  end</pre.

Код для расчета FWHM для каждого двумерного массива

clear all;
    a=1;
    while a<=10;
    filename=strcat('S',num2str(a),'.csv');
    Array=csvread(filename,15,0);
    x = Array(:, 1);
    y = Array(:, 2);
    fwhm(x,y)
    a = a+1;
    end

ПРИМЕЧАНИЕ. 

Matlabsolutions.com предоставляет последнюю Помощь по домашним заданиям MatLab, Помощь по заданию MatLab для студентов, инженеров и исследователей в различных отраслях, таких как ECE, EEE, CSE, Mechanical, Civil со 100% выходом. Код Matlab для BE, B.Tech ,ME,M.Tech, к.т.н. Ученые со 100% конфиденциальностью гарантированы. Получите проекты MATLAB с исходным кодом для обучения и исследований.

for a = 1 : 10
      filename = sprintf('S%d.csv', a);
      Array=csvread(filename,15,0);
      x = Array(:, 1);
      y = Array(:, 2);
      width = fwhm(x,y);
      outputs = [num2cell(x), num2cell(y)];
      outputs{3,1} = width;
      newfilename = sprintf('Snew%d.csv', a);
      xlswrite(newfilename, outputs);
    end

СМОТРИТЕ ПОЛНЫЙ ОТВЕТ НАЖМИТЕ НА ССЫЛКУ