Combining 3 curves into 1 average
5 次查看(过去 30 天)
显示 更早的评论
Hi, I am trying to combine 3 curves into 1 average curve (by taking the mean of the 3 curves). As far as I understand (by reading other questions on this site) I need to use interp1, but I am not sure how to create the 'query points' (that I called n). So far my code looks like this:
n = linspace(???);
yyS = interp1(timeS(:),Y2S(:),n);
yyC = interp1(timeC(:),Y2C(:),n);
yyA = interp1(timeA(:),Y2A(:),n);
avg = mean([yyS, yyC, yyA],3);
figure(10);
plot(avg)
The data has the following dimensions:
timeS & Y2S: 345x1
timeC & Y2C: 336x1
timeA & Y2A: 335x1
Any help would be greatly appreciated!!
0 个评论
采纳的回答
Ameer Hamza
2020-6-10
编辑:Ameer Hamza
2020-6-10
Create 'n' like this
min_n = min([timeS; timeC; timeA])
max_n = max([timeS; timeC; timeA])
n = linspace(min_n, max_n, 300).'; % choose any appropriate number instead of 300
yyS = interp1(timeS(:),Y2S(:),n);
yyC = interp1(timeC(:),Y2C(:),n);
yyA = interp1(timeA(:),Y2A(:),n);
avg = mean([yyS, yyC, yyA], 2); % second input should be 2 (not 3)
figure(10);
plot(n, avg)
6 个评论
更多回答(1 个)
Stephan
2020-6-10
Here is a simple example:
% fantasy times
times1 = 1:10
times2 = 1:2:11
% fantasy values
y1 = 2 * (1:10)
y2 = 4 * (1:2:11)
% interpolate, query points should be longest time frame
y2_new = interp1(times2,y2,times1)
% Concatenate the vectors to calculate the mean for every pair
y_all = [y1; y2_new];
% get the mean
y_mean = mean(y_all)
2 个评论
Stephan
2020-6-10
It is a simple example that you can walk through to understand what happens. I think understanding the way it works and the transfer this knowledge on your problem is easier on the long term than just copy and paste something, that you do not understand.
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Logical 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!