2015-11-29 5 views
0

У меня есть два разных набора значений, соответствующих кривой намагничивания. Моя проблема в том, что я не могу вычислить средние значения кривых. Я думаю, что я должен использовать какую-то интерполяцию, но я не знаю, как это сделать.Расчет средней кривой

Мой код до сих пор:

I = [ 0 1.1 4 9.5 15.3 19.5 23.1 26 28.2 30.8 33.3 35.9]; 
E_up = [ 5.8 10.5 28 60.3 85.5 100.3 108 113.2 117 120.5 123.5 126]; 
Iw = [ 34 31.5 28.2 23.9 19.9 16.1 13 8.1 3.5 1.2 0 NaN]; 
E_down = [124.6 122.5 118.8 112.2 103.9 93.1 81.6 59.1 29.6 14.5 9.5 NaN]; 
n = 800/1500; 

plot(I,E_up,Iw,E_down) 
grid on 
legend ('up', 'down') 

%loop for mean values 

for ii = 1:length(I) 
    E1(ii) = ((E_down(13-ii))); 
    E2(ii) = E_up(ii); 
    E4(ii) = mean([E1(ii),E2(ii)]); 
    I2(ii) = Iw(13-ii) 
    I3(ii) = mean([I2(ii),I(ii)]) 
end 


hold on  
plot(I3,E4,'r-') 
plot(I3(7),E2(7),'co',I3(7),E1(7),'ro') 
plot(I3,E1,'c-',I3,E2,'g-') 

Вот график я получаю и его совершенно неправильно

enter image description here

* редактировать Проблема заключается я действительно получаю среднюю кривую голубого цвета и светло-зеленый вместо синего и темно-зеленого.

+0

Что не так с сюжетом? Объясните свой ожидаемый результат, особенно то, что среднее значение кривой в этом контексте. – Daniel

+0

Предполагается, что это кривая со средними значениями двух кривых id. E_up и E_down –

+0

Я вижу 5 кривых, считая, что вы сохранили их как столбцовую матрицу 'A', ваша« средняя кривая »просто« означает (A, 2) ». В этом случае get 'mean (A (:, [1 5]), 2)' – Adriaan

ответ

1
%// Trump up some curves 
tmp = [1:1e3].';%'// 
A(:,1) = tmp; 
A(:,2) = 2.*tmp; 
A(:,3) = 0.5*tmp+1; 
A(:,4) = 2.2.*(tmp+0.2); 
A(:,5) = 1.3.*tmp; 

%// calculate means 
B = mean(A,2); 
C = mean(A(:,[1 5]),2); 

figure; 
hold on 
plot(A,'b') 
plot(B,'r') %// mean of all blue curves 
plot(C,'g') %// mean of the top and bottom curves 

mean работа по матрицам и может быть установлена, чтобы взять среднее значение для каждой строки установки второго входа для 2.

enter image description here

+0

Ну, я попробовал: clc, очистить все, закрыть все; I = [0 1.1 4 9.5 15.3 19.5 23.1 26 28.2 30.8 33.3 35.9]; E_up = [5,8 10,5 28 60,3 85,5 100,3 108 113,2 117 120,5 123,5 126]; Iw = [34 31,5 28,2 23,9 19,9 16,1 13 8,1 3,5 1,2 0 NaN]; E_down = [124,6 122,5 118,8 112,2 103,9 93,1 81,6 59,1 29,6 14,5 9,5 NaN]; n = 800/1500; E_down2 = fliplr (E_down) А (:, 1) = E_up ' А (:, 2) = E_down2' тех = средний (А, 2) фигуры() участок (I, мо,' r ') провести на участок (I, E_up,' b - ', Iw, E_down,' g- ') и я получил http://imgur.com/8zUoYKG. Что не так. –

+0

Я думаю, что основная проблема заключается в том, что у меня нет одинаковых значений для I и Iw, и я должен каким-то образом интерполировать одну кривую, чтобы найти соответствующие значения E_up или E_down. –

0

Ну я интерполированное одну кривую, а затем используется среднее значение. Поэтому мой код:

clc, clear all, close all; 

I = [ 0 1.1 4 9.5 15.3 19.5 23.1 26 28.2 30.8 33.3 35.9]; 
E_up = [ 5.8 10.5 28 60.3 85.5 100.3 108 113.2 117 120.5 123.5 126]; 
Iw = [ 34 31.5 28.2 23.9 19.9 16.1 13 8.1 3.5 1.2 0 NaN]; 
E_down = [124.6 122.5 118.8 112.2 103.9 93.1 81.6 59.1 29.6 14.5 9.5  NaN]; 
n = 800/1500; 

x_est = I; 
y_est = spline(Iw,E_down,x_est) 
A(:,1)= E_up 
A(:,2) = y_est 

ma = mean(A,2) 

figure() 
hold all 
plot(I,E_up,'b-',Iw,E_down,'g-') 
plot(I,ma,'r') 
grid on 
legend('up','down','mean') 
+0

В вашем вопросе вы просто попросите способ рассчитать среднее значение двух кривых. Я дал вам ответ на этот вопрос, который, по-видимому, работает, поскольку вы используете мой код, хотя и без цитаты, чтобы ответить на ваш собственный вопрос. Из самого вопроса неясно, что вам нужно интерполировать, вы должны отредактировать это. Кроме того, в соответствии с SO [ссылкой] (http://stackoverflow.com/help/referencing) для кредитования ваших источников. – Adriaan

Смежные вопросы