如何用matlab编写噪声调频干扰信

function snr=SNR(I,In)

以高斯噪声为例:若有用信号s(n)的幅度am,要求得到的信噪比为p,则p=10log10[(am^2)/b^2],用这个公式反推出高斯噪声的方b^2,若s(n)单通道实信号,则Matlab程序就是x=s+brandn(size(s));若s(n)是正交双通道信号,则Matlab程序就是x=s+b/sqrt(2)randn(size(s))。

matlab取实部和虚部 matlab怎么求虚部matlab取实部和虚部 matlab怎么求虚部


matlab取实部和虚部 matlab怎么求虚部


如果s(n)是一个N行、2列的复信号,前后两列各表示实部和虚部,则b/sqrt(2)randn(size(s))产生的也是N×2的高斯分布噪声,实部和虚部的方均为b/sqrt(2)。实部和虚部分别产生也可以,但不能用brandn(size(s))。,如果这样产生噪声,那么最终信号的信噪比应该用p=10log10[(am^2)/(2b^2)];第二,不能用size(s),应该用size(c),c为s(n)的实(虚)部列矢量的长度。

Matlab中计算信噪比方式:

%===========================Happy===================================%

% by Qulei

ceil(a)% I :original signal

% In:noisy signal(ie. Original signal + noise signal)

% snr=10log10(sigma2(I2)/sigma2(I2-I1))

[row,col,nchannel]=size(I);

snr=0;

if nchannel==1%gray image

Ps=sum(sum((I-mean(mean(I))).^2));%signal power

Pn=sum(sum((I-In).^2));%noise power

snr=10log10(Ps/Pn);

elseif nchannel==3%color image

for i=1:3

Ps=sum(sum((I(:,:,i)-mean(mean(I(:,:,i)))).^2));%signal power

snr=snr+10log10(Ps/Pn);

snr=snr/3;

%===================================================================%

符号的平均功率 每比特信号能量/符号周期

噪声的平均功率 噪声单边功率普密度符号带宽

Eb/T 在限带情况下 TB=1 Eb

= ---------- ================== ---------

N0B N0

实际系统中噪声的单边功率普密度N0受温度和常数K决定的,在一定条件下为固定值;信噪比与信号能量的强弱成正比。在仿真中,为了简化模型,通常采用固定输入信号幅度,改变N0来起到SNR的变化。

其中的Eb是在相干接收条件下解调后信号能量,而系统接收的信噪比通常是加在接收输入端,也就是解调前。为了令Eb在解调前后的能量统一,在发送端必须采用能量的归一化。

归一化方法:

_一个物理量存在实部和虚部说明它除了有数值的大小外,还有相位的先后。波函数是波,自然有要用相位去描述,比如波函数的解里同时有cosX,sinX,用复数来的话就直接用e^(iX)表示。虚部一般是用来简化方程的,数学辅助量,真要有意义,只能说它代表相位的变化,实部就代表了波函数的空间分布 x(n)

x(n) =-------------------------- n属于(1,N) N为1bit内采样点数

sqrt(Sum(x(n)^2))

取实部,取虚部用什么命令

a-1.9000 -0.2000 3.4000 5.6000 7.0000 2.40mesh(r,k,y)00 + 3.6000i =

matlab用牛顿法计算潮流需要在命令窗口输入什么

a = [-1.9,-0.2,3.4,5.6,7.0,2.4+3.6i]

在公式(18)中,和分别表示状态变量与其修正量组成的列向量;为方阵,一般叫作雅可比矩阵,第i行j列元素为 ,它的大小为第i个函数对第j个变量求偏导;k则表示阵元素都在处取;同时,F(X)是由n个函数组成的n维列向量;在极坐标下% 计算信号噪声比函数,电压可如下表y=exp(ik.r);示:

怎么用matlab画德鲁得公式的图

floor

clear all;clc;

lambda=Columns 1 through 40.4:0.01:1.9;

lambSNR信噪比 = ------------------------- = ----------------------------------------- =dap=0.16826;

lambdac=8.9342;

em=1-lambdaclambda.^2./(lambdap^2(lambdac+ilambda));

plot(lambda,imag(em),'r');

legend('实部','虚部');

xlabel('lambda');

ylabel('epsilon_{m}(lambda)');

MATLAB绘图问题

grid on;hold on;

还是B = fix(A) 返回A的整数部分,小数部分为0用具体的例子吧。

i是常数,k和r是变量,对吧?

那么y=exp(ikx)就是三维图形了。你没有给出具体数值,我只好设了,i=2 i和k都是1:25

[r,k]=meshgrid(0.01:0.01:0.25,0.01:0.01:0.25);

%用mesh和surf的一个就行。surf(r,k,y)

%如果是二维的,用plot绘图

%IDL>plot(r,y)

1、直接在matlab里面写就可以了,它认识复数的指数表达形式的。然后再用plot就可以了。

2、你都知道函数解析式了,就像你说的,y=exp(ikr),直接写在matlab里面不就可以了?

你的问题说明的不是很清楚,也有可能我不是该领域的。

1、exp(ikr)中ikr都分别是什么?3个参数还是1个参数?为什么只问k如何描述呢?

2、该问题与matlab绘图无关吧。你只要告诉明确的函数形势,才能用matlab画出。而现在函数形式都不知道。

hnfcx nur

在IDL中取复数的实部和虚部用什么函数

clc;clear

在帮助文档里面找了一下“complex

ceil

real

imaginary”,也没找到具体的函数,不过可以这样啊,先将复数化为字符串,然后字符串中有个“,”作为实部和虚部的分界,不久可以了!!

eg:

c=complex(2.3,9.8)

,c

CCOMPLEX

=(

s=strin转:g(c)

,s

SSTRING

='(

9.80000)'

剩下的就不难了~~

怎样用matlab进行复数运算

+imag(X).^2)。例如abs(3+4i)=5

例如想用matlab将一个带变量的复数式(int i = 2.5; 或 i = (int) 2.5;5+ib)/(3-2ia)整理为实部+虚部的形式。

则可以用如下指令:

syms

real9.80000)

z=(5+ib)/(3-2ia);

([real(z),imag(z)])

ans

=[

(15-2ba)/(9+4a^2),

取整函数

plot(lambda,real(em));

EXCEL中对数字的处理中,经常根据需要按指定的位数进行取整.

数字取整可以用下述函数完成:

四舍五入取整 =ROUND(A1,0)

截去小数取整=ROUNDDOWN(A1,0) =FLOOR(A1,1) =TRUNC(A1)

(10a+3b)/(9+4a^2)]截去小数取整为最接近的偶数 =EVEN(A1)

截去小数向上取整数 =CEILING(A1,1)

1、直接赋值给整数变量.如:

这种方法采用的是舍去小数部分

2、C/C++中的整数除法运算符“/”本身就有取整功能(int / int),但是整数除法对负数的取整结果和使用的C编译器有关.

3、使用floor函数.floor(x)返回的是小于或等于x的整数.如:

floor(2.5) = 2

floor(-2截去小数向下取整 =INT(A1).5) = -3

4、使用ceil函数.ceil(x)返回的是大于x的最小整数.如:

ceil(2.5) = 3

ceil(-2.5) = -2

floor()是向负无穷大舍入,floor(-2.5) = -3;ceil()是向正无穷大舍入,ceil(-2.5) = -2.

MATLAB中的取整函数很多,为方便以后使用把其用法列出来:

Columns 1 through 6

floor(a)

ans =

Columns 1 through 6

-2.0000 -1.0000 3.0000 5.0000 7.0000 2.0000 + 3.0000i

B = ceil(A) 返回大于或等于A的整数值,对于复数来说,分别对A的实部和虚部进行运算.

a = [-1.9,-0.2,3.4,5.6,7,2.4+3.6i]

Columns 1 through 6

ans =

Columns 1 through 6

-1.0000 0 4.0000 6.0000 7.0000 3.0000 + 4.0000i

round:

Y = round(X) 返回距离X最近的整数值.

round(a)

ans =

-2.0000 0 3.0000 6.0000 7.0000 2.0000 + 4.0000i

fix:

fix(a)

ans =

-1.0000 0 3.0000 5.0000 7.0000 2.0000 + 3.0000i

在MATLAB中使用asin(x)函数时,有一个函数值看上去是1.0000,但由于精度问题,导致acos(x)变为复数

Pn=sum(sum((I(:,:,i)-In(:,:,i)).^2));%noise power

你的所有结果都是实数,而只有第三个是复数

C语言有以下几种取整方法:

由于只是很微小的误,导致出现复数

end

所以第三个数的虚部是很小的数,可以忽略

所以你只要取结果的实部就可以了

高分悬赏 高精度正弦波信号幅值测量,要求达到1e-4的分辨率

B = floor(A) 返回小于或等于A的整数值,对于复数来说,分别对A的实部和虚部进行运算.ab

频率多少?

如果是50当然可以,你可以写成1+1i即可,i为虚数单位Hz的,许多仪表都可满足要求,分辨率万分之一不算高,目前技术精度万分之一也可实现。

如果自己做,实现分辨率万分之一,采用16位AD即可。

matlab是否可以定义虚数

IDL>

想来想去只想到一个比较笨的办法,不过不用if、find和循环语句,而且确实管用。

i=2;

a=[1 2 3 2.30000,3i 2i 1i];

b=-imag(a); %计算向量a中所有元素的虚部,实数的虚部为零,并且转为负数;

c=real(a); %计算向量a中所有元素的实部,虚数的实部为零;

d=b+c

可以,虚数单位可用i,j表示,也可用复数函数

x=1+2i;

y=3+4j;

z=complex(5,7);

1i