How I can Plot Data Samples as Data values in Y-axis and Sample counter converted to micro second values in X-axis? Then get average and standard variation values?

8 views (last 30 days)
I imported the excel file which have Two coloumns and 100,001 rows.
1- I use the plot icon in MATLAB to plot all of the rows in the first column. for example below:
2- Then, I get the below graph:
2- How I can do this plot again, but insetad of the Sample counter values in x-axis, I want to make it (time).
For example, convert the first sample = 1 TO BE first sample = 1e-06 (micro seconds) and to all of the other samples till I reach 100,001 e-06. I can explain it again below:
  1. The distance between samples is 1us (microsecond).
  2. We take the samples, create time axis. And, We’ve got 100,001 point.
  3. So we got time samples, or sample counter (SC), and we translate this into time, Which will be 100,001 * 1 us (micro seconds) which will be 100,000 us (microseconds)
3- After I finish from above steps, I will have my samples in the y-axis and I will have the time in micoseconds in x-axis.
4- Then I want to plot The pulse,which is in 50 us, that’s the ON time (included in the plot). And, the OFF time is 950 us (not in plot). However:
  1. The start of analysis of 1st window, is 15us + 5 um. That’s our start.
  2. The end of first-time window is 15us + 5us + 40us. Thats our end. Then we can plot it.
5- So after we finish from the first pulse above which is considers as number 0. Then we have to do it to the rest for pulses which will be for example from 1 to 99. And we use a counter, for example,"m" to be used for 1 to 99 in below equation:
  1. 15us + 5us + 40us + m*1000us.
  2. Therefore I need to repeat for example, using "for" loop.
  3. and then we just hold on for the 40us AND hold off for the rest in each loop. Then plot all of those windows and then we should have a line.
6- Also when we do the “for” loop, for each time window , I want to calculate average as well AND standard deviation. I also want to plot thses and see if there a trend

Answers (1)

Cris LaPierre
Cris LaPierre on 27 Sep 2022
I highly recommend going through MATLAB Onramp, but the quick answers are
2. Select your x values, then use Ctrl+click to select your y values (should have 2 columns selected. Not go to the plots tab and select the plot you want. See this video. this approach will not work if you plan to loop your code, however. You must write the actual code.
4. The easiest way to plot is to create a vector of your pulse values, and a corresponding vector of time values. Then plot them using the appropriate plotting function. To add 2 lines to the same plot, use hold on followed by hold off when done.
6. Taking the average and standard devaition are just a matter of using the mean and std functions with the appropriate data. MATLAB Onramp will introduce you to using MATLAB functions as well.
  15 Comments
Cris LaPierre
Cris LaPierre on 30 Sep 2022
Edited: Cris LaPierre on 30 Sep 2022
Here, I think it is easier to work in indices rather than time. Again, you have the equation for the indices you want already, so now just incorporate it into your code. I'm not sure what exactly you want your final plot to be, so I took a guess by plotting the mean of mag and phase over each 40 pulse.
% Start is the same as before
file = "https://www.mathworks.com/matlabcentral/answers/uploaded_files/1140105/MATLAB%20DATA%20-%20Exp%207.xlsx";
M = readtable(file)
M = 100000×4 table
I_inc I_ref Q_inc Q_ref ___________ ___________ ___________ ___________ 0.0007087 0.00077618 0.00047246 0.00025873 -0.00047246 -0.00038809 -0.00094493 -0.00012936 0 0.00038809 0.00047246 0.00012936 0.00035435 0.00025873 0.00023623 -0.00012936 -0.0012993 -0.0011643 -0.0011812 0.00012936 0.003071 0.0031047 0.0035435 0 -0.031655 -0.029107 -0.036616 0 -0.061302 -0.051874 -0.060475 0.0046571 -0.058822 -0.045148 -0.047364 0.0086673 -0.064964 -0.047735 -0.048309 0.011255 -0.065554 -0.045536 -0.042758 0.013712 -0.068035 -0.045536 -0.040514 0.015653 -0.070161 -0.044501 -0.037443 0.017852 -0.071224 -0.043466 -0.033663 0.019922 -0.073114 -0.042819 -0.031183 0.021862 -0.074059 -0.041267 -0.026812 0.024061
A = M.I_inc;
B = M.Q_inc;
E2 = complex(A,B);
C = M.I_ref;
D = M.Q_ref;
F2 = complex(C,D);
% getting IMABS
Inc_mag = abs(E2);
Ref_mag = abs(F2);
Inc_phase_deg = angle(E2) * 180/pi;
Ref_phase_deg = angle(F2) * 180/pi;
%==
s11 = F2./E2;
s11_mag = abs(s11);
s11_phase_deg = angle(s11) * 180/pi;
%==
t = (1:length(s11_mag))*1e-6;
plot(t,s11_mag)
ylabel('Magnitude')
xlabel('Time (s)')
% define pulse characteristics
start = 20;
width = 40;
gap = 1000;
% capture results in a new table, pStats
pStats = table('Size',[100 3],'VariableTypes',{'double','double','double'},'VariableNames',["Time","Avg_mag","Avg_phase"]);
ind = start:gap:length(s11_mag);
for p = 1:length(ind)
magdata = s11_mag(ind(p):(ind(p)+width));
phasedata = s11_phase_deg(ind(p):(ind(p)+width));
pStats.Time(p) = t(ind(p));
pStats.Avg_mag(p) = mean(magdata);
pStats.Avg_phase(p) = mean(phasedata);
end
% view results
pStats
pStats = 100×3 table
Time Avg_mag Avg_phase _______ _______ _________ 2e-05 0.6069 -49.839 0.00102 0.6084 -49.597 0.00202 0.60818 -50.096 0.00302 0.60956 -49.635 0.00402 0.60508 -49.805 0.00502 0.60838 -49.696 0.00602 0.60864 -49.7 0.00702 0.61456 -49.906 0.00802 0.60383 -49.556 0.00902 0.60549 -49.495 0.01002 0.60312 -49.277 0.01102 0.60495 -50.126 0.01202 0.60417 -49.947 0.01302 0.60335 -49.592 0.01402 0.6058 -49.545 0.01502 0.60667 -49.533
figure
yyaxis left
plot(pStats,"Time","Avg_mag")
ylabel('Magnitude')
xlabel('Time (s)')
yyaxis right
plot(pStats,"Time","Avg_phase")
ylabel('Phase (deg)')

Sign in to comment.

Categories

Find more on Filter Design and Analysis 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!

Translated by