2015-11-29 282 views
0

我有2组不同的值对应于磁化曲线。 我的问题是我实际上无法计算曲线的平均值。 我想我应该使用某种插值,但我不知道如何。计算平均曲线

我迄今为止代码:

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)”。对于这两种情况,得到'平均(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) A(:,1)= E_up ' A(:,2)= E_down2' 毫安=平均值(A,2) 图() 情节(I,MA,' r') 举行 plot(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