首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在matlab中组合两个数据集和作图

在matlab中组合两个数据集和作图
EN

Stack Overflow用户
提问于 2013-06-25 00:04:06
回答 1查看 1.7K关注 0票数 3

我正在用不同的运算放大器电路做实验,我需要把我的测量结果绘制到一个图表上。我有两个数据集:

代码语言:javascript
复制
freq1 = [.1 .2 .5 .7 1 3 4 6 10 20 35 45 60 75 90 100]; %kHz
Vo1 = [1.2 1.6 1.2 2 2 2.4 14.8 20.4 26.4 30.4 53.6 68.8 90 114 140 152]; %mV
V1 = 19.6;
Acm = Vo1/(1000*V1);

和:

代码语言:javascript
复制
freq2 = [.1 .5 1 30 60 70 85 100]; %kHz
Vo1 = [3.96 3.96 3.96 3.84 3.86 3.88 3.88 3.88]; %V
V1 = .96;
Ad = Vo1/(2*V1);

(我会展示我的情节,但显然我需要更多的代表)

我需要画出等式,CMRR和freq:

代码语言:javascript
复制
CMRR = 20*log10(abs(Ad/Acm)); 

AdAcm的大小不同,频率点不匹配,但两者的边界是相同的,100 up到100 The (x轴)。关于CMRR,Matlab说AdAcm矩阵的维数不一致。

我想解决这个问题的方法是使用freq1作为CMRR的x轴,然后根据freq1上的值从Ad中获取近似点。或者我可以对AdAcm进行函数近似,然后对它们进行除法运算。

我不知道如何将这两个想法编码在一起。任何其他想法都会有帮助,特别是更简单的想法。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-25 00:18:48

我将使用union获得统一的频率轴,然后使用interp1对数据点进行插值。我们需要听从马丁的建议,使用./运算符进行逐个元素的操作。下面是一个例子:

代码语言:javascript
复制
Acm = Vo1./(1000*V1);
Ad = Vo1./(2*V1);
freq = union(freq1,freq2)
Acmi = interp1(freq1,Acm,freq);
Adi = interp1(freq2,Ad,freq);
% test the goodness of the interpolation
figure; plot( freq1, Acm, freq, Acmi );
legend('origial A_{cm}', 'interolated A_{cm}','Location','NorthWest');
figure; plot( freq2, Ad, freq, Adi );
legend('origial A_{d}', 'interolated A_{d}');

然后绘制输出:

代码语言:javascript
复制
CMRR = 20*log10(abs(Adi./Acmi));
plot( freq, CMRR )
title('Common Mode Rejection Ratio')
xlabel('Frequency(Hz)')
ylabel('CMMR (dB)')

这是我的最后一张图:

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17279940

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档