how to solve this error index?

1 visualizzazione (ultimi 30 giorni)
ramya
ramya il 13 Nov 2023
Risposto: Rahul il 4 Set 2024
i Have five files i have to plot 50 percentile plot column 3 data with respect to 120:0.1:150.5 in one single plot
Files = dir('*.csv');
Filesc = struct2cell(Files);
NrFiles = size(Filesc,2);
for k = 1:NrFiles
filename = Filesc{1,k};
T{k,:} = readtable(filename);
end
Final_T = cat(1,T{:});
i=reshape(Final_T.r,5,24)
i = 5×24
1.0e+65 * 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0001 1.0400 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.6970 1.1500 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.7700 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.8510 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 0.0000 0.9410 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 0.0000 -0.0000 -0.0000
i(:)'
ans = 1×120
0.8142 0.7521 0.6826 0.6062 0.5238 0.4362 -0.3673 -0.2726 -0.1752 -0.0760 0.0239 0.1236 -0.1978 -0.2947 -0.3886 -0.4787 -0.5639 -0.6435 0.6993 0.7671 0.8273 0.8793 0.9224 0.9564 0.7131 0.8761 1.0706 1.3118 1.6262 2.0632
size(i)
ans = 1×2
5 24
x=120:0.2:124.6;
size(x)
ans = 1×2
1 24
per=prctile(i,50) % i hv to take 50 percentile of column 3 data from all the files and plot against 120:0.1:120.5
per = 1×24
1.0e+64 * 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 -0.0000 0.0000 0.0000 0.0004 7.7000 0.0000 0.0000 0.0000 0.0000 0.0000 0.0000 -0.0000 -0.0000 0.0000 -0.0000
figure
plot(x, per)
grid
xlabel('b')
ylabel('r')
i am not able to plot properly 50 percentile plot for column 3 data which is present in all data files wrt 120:0.1:124.6 in one single plot . i want all the files data in one plot
  2 Commenti
Star Strider
Star Strider il 13 Nov 2023
This looks strikingly similar to how to import file? and I still do not understand the objective.
ramya
ramya il 13 Nov 2023
this time data s changed i have to plot 50 percentile column 3 data of all files wrt 120:0.1:124.6

Accedi per commentare.

Risposte (1)

Rahul
Rahul il 4 Set 2024
Hi ramya,,
I understand that you’re trying to plot 50 percentile plots of 3rd column data of five .csv files, onto a single plot.
Given your current code snippet, you can generate 50-percentile plot vectors of column data from each file using ‘prctile’ function and then plot against the desired x-axis limits onto a single figure using ‘hold’ command, as shown below:
% Reshape final table to get column data vectors
Final_T=reshape(Final_T.r,24,5);
% Desired x-axis limits
xRange = 120:0.1:150.5;
percentiles = zeros(length(xRange), 5);
for i = 1:length(NrFiles)
% Extract the third column
column3Data = Final_T(:, i);
% Calculate the 50th percentile for the current dataset
percentiles(:, i) = prctile(column3Data, 50)
end
figure;
for i = 1:size(percentiles, 2)
% Plot individual column percentiles
plot(xRange, percentiles(:, i), 'DisplayName', ['File ', num2str(i)]);
hold on;
end
Here is the resultant figure with five 50-percentile plots, indicated using legends:
For more information regarding custom n-percentile plots of datasets, refer to the documentation link mentioned below:

Categorie

Scopri di più su Line Plots in Help Center e File Exchange

Tag

Prodotti


Release

R2021a

Community Treasure Hunt

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

Start Hunting!

Translated by