色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

如何用MATLAB生成AWGN噪聲

FPGA技術江湖 ? 來源:FPGA算法工程師 ? 作者:FPGA算法工程師 ? 2022-07-03 15:10 ? 次閱讀

huanying

MATLAB中的help文檔,是一個神奇的存在,檢索你想找的關鍵詞,會自動檢索出與關鍵詞相關的內容。例如:檢索一下“awgn”,我們可以得到如下圖所示的界面。

830b2f06-f396-11ec-ba43-dac502259ad0.png

可以非常方便地查閱函數的語法定義,信號定義,以及給出example。

83351730-f396-11ec-ba43-dac502259ad0.png

835a3754-f396-11ec-ba43-dac502259ad0.png

大部分非核心函數,可以打開看到源碼,例如awgn的源碼:

function y = awgn(varargin)%AWGN Add white Gaussian noise to a signal.%   Y = AWGN(X,SNR) adds white Gaussian noise to X.  The SNR is in dB.%   The power of X is assumed to be 0 dBW.  If X is complex, then %   AWGN adds complex noise.%%   Y = AWGN(X,SNR,SIGPOWER) when SIGPOWER is numeric, it represents %   the signal power in dBW. When SIGPOWER is 'measured', AWGN measures%   the signal power before adding noise.%%   Y = AWGN(X,SNR,SIGPOWER,S) uses S to generate random noise samples with%   the RANDN function. S can be a random number stream specified by%   RandStream. S can also be an integer, which seeds a random number%   stream inside the AWGN function. If you want to generate repeatable%   noise samples, then either reset the random stream input before calling%   AWGN or use the same seed input.%%   Y = AWGN(..., POWERTYPE) specifies the units of SNR and SIGPOWER.%   POWERTYPE can be 'db' or 'linear'.  If POWERTYPE is 'db', then SNR%   is measured in dB and SIGPOWER is measured in dBW.  If POWERTYPE is%   'linear', then SNR is measured as a ratio and SIGPOWER is measured%   in Watts.%%   Example 1: %        % To specify the power of X to be 0 dBW and add noise to produce%        % an SNR of 10dB, use:%        X = sqrt(2)*sin(0:pi/8:6*pi);%        Y = awgn(X,10,0);%%   Example 2: %        % To specify the power of X to be 3 Watts and add noise to%        % produce a linear SNR of 4, use:%        X = sqrt(2)*sin(0:pi/8:6*pi);%        Y = awgn(X,4,3,'linear');%%   Example 3: %        % To cause AWGN to measure the power of X and add noise to%        % produce a linear SNR of 4, use:%        X = sqrt(2)*sin(0:pi/8:6*pi);%        Y = awgn(X,4,'measured','linear');%%   Example 4: %        % To specify the power of X to be 0 dBW, add noise to produce%        % an SNR of 10dB, and utilize a local random stream, use:%        S = RandStream('mt19937ar','Seed',5489);%        X = sqrt(2)*sin(0:pi/8:6*pi);%        Y = awgn(X,10,0,S);%%   Example 5: %        % To specify the power of X to be 0 dBW, add noise to produce%        % an SNR of 10dB, and produce reproducible results, use:%        reset(RandStream.getGlobalStream)%        X = sqrt(2)*sin(0:pi/8:6*pi);%        Y = awgn(X,10,0);%%%   See also comm.AWGNChannel, WGN, RANDN, RandStream/RANDN, and BSC.
%   Copyright 1996-2018 The MathWorks, Inc.
%#codegen
narginchk(2,5);
% Validate signal inputsig = varargin{1};validateattributes(sig, {'numeric'}, ...    {'nonempty'}, 'awgn', 'signal input');
% Validate SNR inputreqSNR = varargin{2};validateattributes(reqSNR, {'numeric'}, ...    {'real','scalar','nonempty'}, 'awgn', 'SNR input');
% Validate signal powerif nargin >= 3    if strcmpi(varargin{3}, 'measured')       sigPower = sum(abs(sig(:)).^2)/numel(sig); % linear    else        validateattributes(varargin{3}, {'numeric'}, ...            {'real','scalar','nonempty'}, 'awgn', 'signal power input');        sigPower = varargin{3}; % linear or dB    endelse    sigPower = 1; % linear, defaultend
% Validate state or power typeif nargin >= 4        coder.internal.errorIf(comm.internal.utilities.isCharOrStringScalar(varargin{4}) && ...        all(~strcmpi(varargin{4}, {'db','linear'})), ...        'commInvalidPowerType');
    isStream = ~isempty(varargin{4}) && ~comm.internal.utilities.isCharOrStringScalar(varargin{4});
    if isStream && ~isa(varargin{4}, 'RandStream') % Random stream seed        validateattributes(varargin{4}, {'double'}, ...            {'real','scalar','nonnegative','integer','<',2^32}, ...            'awgn', 'seed input');    endelse % Default    isStream = false;end
% Validate power typeif nargin == 5    coder.internal.errorIf(comm.internal.utilities.isCharOrStringScalar(varargin{4}), ... % Type has been specified as the 4th input        'commInputAfterPowerType');     coder.internal.errorIf(all(~strcmpi(varargin{5}, {'db','linear'})), ...        'commInvalidPowerType'); end
isLinearScale = ((nargin == 4) && ~isStream && strcmpi(varargin{4}, 'linear')) || ...    ((nargin == 5) && strcmpi(varargin{5}, 'linear'));
% Cross-validationcoder.internal.errorIf(isLinearScale && (sigPower < 0), ...    'commInvalidSigPowerForLinearMode');
coder.internal.errorIf(isLinearScale && (reqSNR < 0), ...    'commInvalidSNRForLinearMode');
if ~isLinearScale  % Convert signal power and SNR to linear scale    if (nargin >= 3) && ~comm.internal.utilities.isCharOrStringScalar(varargin{3}) % User-specified signal power        sigPower = 10^(sigPower/10);    end    reqSNR = 10^(reqSNR/10);end
noisePower = sigPower/reqSNR;
if isStream    if isa(varargin{4}, 'RandStream')        stream = varargin{4};    elseif isempty(coder.target)        stream = RandStream('shr3cong', 'Seed', varargin{4});    else                stream = coder.internal.RandStream('shr3cong', 'Seed', varargin{4});    end
    if ~isreal(sig)        noise = sqrt(noisePower/2)* (randn(stream, size(sig)) + ...                                  1i*randn(stream, size(sig)));    else        noise = sqrt(noisePower)* randn(stream, size(sig));    endelse    if ~isreal(sig)        noise = sqrt(noisePower/2)* (randn(size(sig)) + 1i*randn(size(sig)));    else        noise = sqrt(noisePower)* randn(size(sig));    endend    
y = sig + noise; 
% [EOF]

但是,如果不用MATLAB內置的awgn函數,如何用MATLAB生成AWGN噪聲?

可以自己寫一個,可以找找別人寫的,站在別人的肩膀上,可以看得更遠。(如果是學習,建議理解awgn背后的原理和定義,然后自己寫;如果只是為了應用,提高效率,直接用,浮躁的沉不下來的心,已經蔓延~)

下面這份文檔,借花獻佛,在不用內置的函數下,用MATLAB生成AWGN噪聲,可以參考一下。

836d4024-f396-11ec-ba43-dac502259ad0.png

839de4b8-f396-11ec-ba43-dac502259ad0.png

83c57a5a-f396-11ec-ba43-dac502259ad0.png

83dbdf98-f396-11ec-ba43-dac502259ad0.png

84399d54-f396-11ec-ba43-dac502259ad0.png

文檔來源于https://www.gaussianwaves.com,國外的網站,總是這么專業!

高斯波形,信號處理,通信系統,簡潔明了。

845173c0-f396-11ec-ba43-dac502259ad0.png

846c5e24-f396-11ec-ba43-dac502259ad0.png

8496bca0-f396-11ec-ba43-dac502259ad0.png

84a6228a-f396-11ec-ba43-dac502259ad0.png

MATLAB 源碼:

%author - Mathuranathan Viswanathan (gaussianwaves.com%This code is part of the books: Wireless communication systems using Matlab & Digital modulations using Matlab.
function [r,n,N0] = add_awgn_noise(s,SNRdB,L)%Function to add AWGN to the given signal%[r,n,N0]= add_awgn_noise(s,SNRdB) adds AWGN noise vector to signal%'s' to generate a %resulting signal vector 'r' of specified SNR%in dB. It also returns the noise vector 'n' that is added to the%signal 's' and the spectral density N0 of noise added%%[r,n,N0]= add_awgn_noise(s,SNRdB,L) adds AWGN noise vector to%signal 's' to generate a resulting signal vector 'r' of specified%SNR in dB. The parameter 'L' specifies the oversampling ratio used%in the system (for waveform simulation). It also returns the noise%vector 'n' that is added to the signal 's' and the spectral%density N0 of noise added s_temp=s; if iscolumn(s), s=s.'; end; %to return the result in same dim as 's' gamma = 10?(SNRdB/10); %SNR to linear scale  if nargin==2, L=1; end %if third argument is not given, set it to 1  if isvector(s),  P=L*sum(abs(s).?2)/length(s);%Actual power in the vector else %for multi-dimensional signals like MFSK  P=L*sum(sum(abs(s).?2))/length(s); %if s is a matrix [MxN] end  N0=P/gamma; %Find the noise spectral density if(isreal(s)),  n = sqrt(N0/2)*randn(size(s));%computed noise else  n = sqrt(N0/2)*(randn(size(s))+1i*randn(size(s)));%computed noise end  r = s + n; %received signal  if iscolumn(s_temp), r=r.'; end;%return r in original format as send

原文標題:基礎:如何用MATLAB生成AWGN噪聲?(附源代碼)

文章出處:【微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。

審核編輯:彭靜

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • matlab
    +關注

    關注

    185

    文章

    2974

    瀏覽量

    230385
  • 函數
    +關注

    關注

    3

    文章

    4327

    瀏覽量

    62571
  • AWGN
    +關注

    關注

    0

    文章

    7

    瀏覽量

    6734

原文標題:基礎:如何用MATLAB生成AWGN噪聲?(附源代碼)

文章出處:【微信號:HXSLH1010101010,微信公眾號:FPGA技術江湖】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    何用matlab仿真CCD的噪聲

    現在已經用光學設計軟件仿真出了圖像,怎么在matlab中給它加CCD的仿真噪聲!謝謝啦
    發表于 11-29 16:52

    何用matlab寫出sollin算法

    何用matlab寫出sollin算法?求大神帶我學習,價格好商量。
    發表于 04-17 20:30

    Matlab中的snr

    matlab中產生高斯白噪聲可以直接應用兩個函數,一個是WGN,另一個是AWGN。WGN用于產生高斯白噪聲,AWGN則用于在某一信號中加
    發表于 05-27 10:10

    何用matlab生成正弦波數據?

    何用matlab生成正弦波數據?
    發表于 11-22 07:15

    AWGN信道仿真數據量研究

    研究了蒙特卡羅仿真原理和仿真結果置信度;結合AWGN(加性白高斯噪聲)信道特點,甄選出3 個合適的參量,即誤碼個數、置信概率和仿真結果最大相對誤差;提出了AWGN 信道下仿真數據
    發表于 09-08 15:25 ?21次下載

    MathWorks推出基于MATLAB生成HDL代碼的產品

    MathWorks 近日宣布推出 HDL Coder,該產品 支持MATLAB 自動生成 HDL 代碼,允許工程師利用廣泛應用的 MATLAB 語言實現 FPGA 和 ASIC 設計。
    發表于 03-07 09:27 ?2160次閱讀
    MathWorks推出基于<b class='flag-5'>MATLAB</b><b class='flag-5'>生成</b>HDL代碼的產品

    MATLAB如何生成EXE文件介紹

    MATLAB如何生成EXE文件介紹,感興趣的小伙伴們可以看看。
    發表于 07-25 10:45 ?0次下載

    詳解如何用AD生成Gerber文件

    詳解如何用AD生成Gerber文件
    發表于 11-23 11:07 ?0次下載

    一文了解加性高斯白噪聲AWGN)資料下載

    電子發燒友網為你提供一文了解加性高斯白噪聲AWGN)資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-03 08:55 ?91次下載
    一文了解加性高斯白<b class='flag-5'>噪聲</b>(<b class='flag-5'>AWGN</b>)資料下載

    何用matlab生成一個可編程FIR濾波器的硬件HDL代碼?

    01 概述 本文通過matlab自帶的工具箱生成一個可編程FIR濾波器的硬件HDL代碼,可生成VHDL或者Verilog HDL兩種類型的代碼。 02 具體操作步驟 新建一個matlab
    的頭像 發表于 05-03 09:37 ?3611次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>matlab</b><b class='flag-5'>生成</b>一個可編程FIR濾波器的硬件HDL代碼?

    何用MATLAB實現靜態仿真電子版下載

    何用MATLAB實現靜態仿真電子版下載
    發表于 05-27 10:40 ?0次下載

    何用MATLAB進行電路仿真

    本文演示如何用MATLAB進行電路仿真,測量RLC電路的電壓。我用的是R2014a,不同版本軟件界面稍有差別。
    的頭像 發表于 08-09 17:14 ?1.3w次閱讀

    【C語言應用】如何用C代碼生成一維碼?

    【C語言應用】如何用C代碼生成一維碼?
    的頭像 發表于 08-25 12:42 ?2435次閱讀
    【C語言應用】如<b class='flag-5'>何用</b>C代碼<b class='flag-5'>生成</b>一維碼?

    NC3400系列同軸AWGN噪聲源介紹

    Noisecom的NC3400系列同軸AWGN噪聲源需用高ENR和抗高入射點RF使用功率(例如ATE、輻射計和雷達系統)的最佳選擇。考慮到NC3400系列噪聲源的校正精度和平面度比較低,VSWR也
    發表于 02-08 09:07 ?509次閱讀

    何用MATLAB進行電路仿真?

    本文演示如何用MATLAB進行電路仿真,測量RLC電路的電壓。我用的是R2014a,不同版本軟件界面稍有差別。
    的頭像 發表于 05-26 09:47 ?4892次閱讀
    如<b class='flag-5'>何用</b><b class='flag-5'>MATLAB</b>進行電路仿真?
    主站蜘蛛池模板: 亚洲精品乱码久久久久久v| 日本xxxxxxxxx老师59| 久久免费高清| 麻豆成人久久精品二区三区网站 | FREEXXX性乌克兰XXX| qvod 韩国| 国产精品AV无码免费播放| 国产精品久久久久AV麻豆| 花蝴蝶在线观看免费8| 巨爆乳中文字幕爆乳区| 国语大学生自产拍在线观看| 国产精品人妻系列21P| 后入式啪gif动态图| 乱叫抽搐流白浆免费视频| 欧美三级黄色大片| 无羞耻肉动漫在线观看| 亚洲中文字幕乱倫在线| 97一期涩涩97片久久久久久久| 被同桌摸出水来了好爽的视频| 国产精品观看视频免费完整版| 精品久久久噜噜噜久久7| 男人J桶进男人屁股过程| 色婷婷亚洲五月| 亚洲色综合狠狠综合区| 99九九精品视频| 国产精品永久在线| 久久综合九色| 色午夜日本高清视频www| 杨幂视频在线观看1分30秒| a视频在线免费观看| 国产亚洲精品线观看不卡| 老王午夜69精品影院| 少妇内射兰兰久久| 真实国产精品视频国产网| 俄罗斯17vidio| 久久免费高清| 台湾果冻传媒在线观看| 在线观看免费av网站| 国产短视频精品区| 麻豆AV无码精品一区二区| 午夜福利体验试看120秒|