J'ai 30 fichiers (UE1.dat, UE2.dat, ......), tous les se composent de 2 colonnes (le premier est le retard et le second est son CDF). Donc parce que je n'ai pas la valeur CDF pour tous les retards dans la plage [100: 600], j'ai dû interpoler les deuxièmes colonnes selon la première dans tous ces 30 fichiers et ensuite normaliser les données entre 0 et 1 Tout fonctionne parfaitement jusqu'à maintenant. En fin de compte, je dois tracer un graphe, qui consiste en x, y et les barres d'erreur y. est la plage (100: 1: 600), y
est la moyenne pour chaque ligne des données interpolées pour chaque x
de 100 à 600 par l'étape 1, et pour les barres d'erreur y, je calcule l'écart type pour chaque ligne y ainsi que.Y barres d'erreur dans matlab
Mais quand je trace les données avec des barres d'erreur, ça a l'air bizarre et j'ai des tirets étranges, alors que si je ne trace que x contre y tout semble bon. Pouvez-vous me donner quelques conseils pour résoudre le problème avec les barres d'erreur y, peut-être que je manque quelque chose. Ci-dessous le code MATLAB est joint et les graphiques aussi.
clc;
close all;
clear all;
% xq1 = (100:600)
NUM_UES = 30;
NUM_SAMPLES = 501;
for i=1:NUM_UES
%% Loading data
x = load(strcat('C:\Users\tgetsov\Documents\BA THESIS\temp_200\ral\UE',num2str(i),'.cdf.dat'));
y = strcat('C:\Users\tgetsov\Documents\BA THESIS\temp_200\ral\UE',num2str(i),'.cdf.dat');
xq = 100:1:600;
Result(:, i) = interp1(x(:,1), x(:,2), xq, 'linear', 'extrap');
Result_norm(:, i) = (Result(:, i) - min(Result(:, i)))/(max(Result(:, i) - min(Result(:, i))));
end
% p=0:length(Result)-1;
%%Plotting Data
% figure(i);
% % plot(p,Result); hold on;grid;
% plot(xq_i,Result_i);
% hold on;
% grid;
for k=1:NUM_SAMPLES
avg(k) = mean(Result_norm(k,:));
min_30_ral(k) = min(Result_norm(k,:),[],2);
max_30_ral(k)= max(Result_norm(k,:),[],2);
stdev(k) = std(Result_norm(k,:))*ones(size(xq(:, k)));
variance(k) = var(Result_norm(k, :));
end
v = variance;
v2 = zeros(size(v));
v2(1:50:end) = v(1:50:end);
m = stdev;
m2 = zeros(size(m));
m2(1:50:end) = m(1:50:end);
% [F , X] = ecdf(avg)
figure (1)
% errorbar(xq,avg,min_30_ral,max_30_ral);
% errorbar(xq,avg,m2);
% errorbar(xq,avg,v2);
errorbar(xq,avg,m2);
hold on;
grid;
figure (2)
plot (xq, avg);
hold on;
grid;
x contre y:
x contre y avec des barres d'erreur:
Il n'y a pas de problème ici. Ce ne sont pas des "étranges tirets" mais les limites supérieures et inférieures de la barre d'erreur. Vous avez de très petites marges d'erreur entre 0 et 320 pour que la barre apparaisse petite. –
ok c'est plus clair pour moi maintenant, mais comment puis-je tracer uniquement les erreurs verticales sans les horizontales? –
Cochez ceci: http://fr.mathworks.com/matlabcentral/newsreader/view_thread/167875 –