數字信號處理_編程實例1

?stem([1,2,3])

一、初始設置

%% 初始設置
% 清空工作空間,關閉無關頁面
clc,clear,close all;
?
% 繪圖變量
font_size = 12; %全局基礎字體大小
axis_size = 10; %坐標軸刻度標簽字體大小
line_width = 2; %繪圖線條寬度
legend_size = 10.5; %圖例字體大小
marker_size = 12; %數據點標記尺寸
figure_width = 14; ?%圖形整體寬度(單位:英寸)
figure_height = 8; ?%圖形整體高度(單位:英寸)
BiaValue = 0; ? ? ?%偏置值/基準值(用于數據校準或零值參考)

二、波形、圖

原始信號波形

%% //繪制原信號波形
t = 0:0.0001:10;
y = 3*sin(2*pi*10*t) + sin(2*pi*40*t) + sin(2*pi*200*t);

figure

%% 圖形窗口參數設置
% 單位轉換:英寸→厘米(1英寸=2.54厘米)
% 窗口位置:[左下角x坐標, y坐標, 寬度, 高度]
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]); ?% 邊距3cm+內容尺寸

%% 坐標軸精細調整
% LooseInset: 控制坐標軸與圖形邊界的間距
% TightInset: 系統自動計算的最小邊距
% BiaValue: 用于X軸方向的額外偏移補償(如避免標簽截斷)
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y, 'b-', 'LineWidth', line_width) ?% 藍色實線 線寬控制
set(gca,'FontSize',font_size,'FontName','Times New Roman') ?% 字體統一配置(確保中英文字體兼容)
xlim([0 1]); ?% 顯示1秒時長
ylim([-6 6]); % 幅值范圍覆蓋所有分量(3*1 + 1 + 1 = 5 +余量)
set(gca, 'XTick', 0:0.25:1); ?% 每250ms一個主刻度
set(gca, 'YTick', -6:3:6); ? ?% 幅值刻度步長3
xlabel('時間 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman');
ylabel('信號幅值', 'FontSize', font_size, 'FontName', 'Times New Roman');
title('原信號波形', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman');

理想信號波形

%% //繪制理想信號波形
t = 0:0.0001:10;
y = 3*sin(2*pi*10*t);
?
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y, 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 1])
ylim([-4 4])
set(gca,'XTick',0:0.25:1)
set(gca,'YTick',-4:2:4)
xlabel('時間 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('信號幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('理想信號波形', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')

幅頻、相頻圖

%% //采樣,采樣頻率:100Hz,采樣時長:1s
t = 0:0.01:1;
y = 3*sin(2*pi*10*t) + sin(2*pi*40*t) + sin(2*pi*200*t);
?
% figure
% set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
% set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
% plot(t, y, 'b-', 'LineWidth', line_width)
% set(gca,'FontSize',font_size,'FontName','Times New Roman')
% xlim([0 1])
% ylim([-6 6])
% set(gca,'XTick',0:0.25:1)
% set(gca,'YTick',-6:3:6)
% xlabel('時間 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
% ylabel('信號幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
% title('原信號采樣后的波形', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman');
% set(gca,'Fontname','Monospaced'); ?%中文亂碼問題


?
%% //信號分析
% 數據長度
datalength = length(y);
% 對數據進行FFT
yFFT = fft(y, datalength);
mag = abs(yFFT);
% 幅值歸一化
mag = mag*2/datalength;
pha = angle(yFFT)*180/pi;
% 對無效相位進行置0
for i = 1:datalength
? ? if (mag(1,i)<0.3)
? ? ? ? pha(1,i) = 0;
? ? end
end

% 序列坐標
n = 0:datalength-1;
% 采樣頻率
fs = 1/0.01;
% 序列頻率
f = (0:datalength-1)*fs/datalength;

?
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
stem(f(1:datalength/2), mag(1:datalength/2), 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 50])
ylim([0 4])
set(gca,'XTick',0:10:50)
set(gca,'YTick',0:1:4)
xlabel('頻率 (Hz)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('采樣信號的頻域分析', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')
?set(gca,'Fontname','Monospaced'); ?%中文亂碼問題

?figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
stem(f(1:datalength/2), pha(1:datalength/2), 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 50])
ylim([-100 200])
set(gca,'XTick',0:10:50)
set(gca,'YTick',-100:100:200)
xlabel('頻率 (Hz)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('相位 (deg)', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('采樣信號的頻域分析', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')
set(gca,'Fontname','Monospaced'); ?%中文亂碼問題

三、低通濾波器

fdatool?

打開工具箱

打開后,保存為Filter_E3.mat

保存后,雙擊此處

%% //濾波器低通濾波
load('Filter_E3.mat')
filteroce = Num;
y_Filter = filter(filteroce, 1, y);
?
% 繪制濾波后的信號
figure
set(gcf,'Unit','centimeters','Position',[3 3 3+figure_width 3+figure_height]);
set(gca,'LooseInset',get(gca,'TightInset')+[BiaValue,0,0,0],'FontName','Times New Roman','FontSize',font_size);
plot(t, y_Filter, 'b-', 'LineWidth', line_width)
set(gca,'FontSize',font_size,'FontName','Times New Roman')
xlim([0 1])
ylim([-6 6])
set(gca,'XTick',0:0.25:1)
set(gca,'YTick',-6:3:6)
xlabel('時間 (s)', 'FontSize', font_size, 'FontName', 'Times New Roman')
ylabel('信號幅值', 'FontSize', font_size, 'FontName', 'Times New Roman')
title('濾波后的信號', 'FontSize', font_size*1.5, 'FontName', 'Times New Roman')
set(gca,'Fontname','Monospaced'); ?%中文亂碼問題

參考

數字信號處理_第1個編程實例_現代信號處理第一張程序設計-CSDN博客

【數字信號處理_第1個Matlab編程實例】 https://www.bilibili.com/video/BV1514y1w7Sw/?share_source=copy_web&vd_source=be33b1553b08cc7b94afdd6c8a50dc5a?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917598.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917598.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917598.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Docker 安裝部署 OceanBase

1.拉取鏡像 docker pull oceanbase/oceanbase-ce:latest2.啟動oceanbase容器 docker run -p 2881:2881 --name oceanbase-ce -e MINI_MODE0 -d quay.io/oceanbase/oceanbase-ce3.查看oceanbase初始化的日志信息 docker logs oceanbase-ce4.進入oceanbase容器 docker exec -it o…

【華為機試】685. 冗余連接 II

文章目錄685. 冗余連接 II題目描述示例 1&#xff1a;示例 2&#xff1a;提示&#xff1a;解題思路算法分析核心思想算法策略算法對比問題分類流程圖并查集環檢測流程入度統計與候選邊選擇情況分析決策樹完整算法流程復雜度分析時間復雜度空間復雜度關鍵實現技巧1. 并查集優化2…

Redis之Hash和List類型常用命令

Redis之Hash和List類型常用命令一、Hash類型詳解1. Hash類型的特點2. 常用命令及示例&#xff08;1&#xff09;設置字段值&#xff08;2&#xff09;獲取字段值&#xff08;3&#xff09;刪除字段&#xff08;4&#xff09;其他常用命令3. 應用場景二、List類型詳解1. List類型…

【測試】?動化測試概念篇

本節?標&#xff1a;?動化測試Web?動化測試selenium1. ?動化1.1 ?動化概念?動化在?活中處處可?&#xff0c;?動的代替?的?為完成操作。?動灑?機&#xff0c;主要通上?就可以?動化灑?并且可以?動的旋轉。?動洗?液&#xff0c;免去了?動擠壓可以?動感應出洗…

Java中給List<T> 對象集合去重

Java中給List 對象集合去重List<Student> getStudentList studentMapper.getStudentList();List<Student> distinctInsurance distinctByField(getStudentList, Student::getCertNo);public static <T> List<T> distinctByField(List<T> list…

最小二乘法MSE

最小二乘法MSEx1x2x3x4x5x6x7x8x0y014805-29-31339-41064-14-2-1481-114-1-65-123-32-21305-23105114-81126-15-15-8-157-4-1221-39511-10-243-9-671-87-1404-35101371422-3-7-2-80-6-5-91-3091前景知識: 矩陣相關公式y(339?11430126?395?87422?309)y\begin{pmatrix} 339&a…

Pixel 4D 3.4.4.0 | 支持豐富的壁紙資源,高清畫質,高度的個性化設置能力,智能推薦功能

Pixel 4D是一款功能強大且用戶體驗良好的動態壁紙應用。它提供了豐富的壁紙資源和高清畫質&#xff0c;讓用戶可以輕松找到自己喜歡的壁紙。此外&#xff0c;該應用還具備高度的個性化設置能力&#xff0c;允許用戶根據自己的喜好調整壁紙效果。智能推薦功能則能幫助用戶發現更…

<PhotoShop><JavaScript><腳本>基于JavaScript,利用腳本實現PS軟件批量替換圖片,并轉換為智能對象?

前言 PhotoShop軟件支持JavaScript腳本,來擴展軟件的功能,官方本身也提供了一些常用腳本,如圖像處理等,同時也支持自定義的JavaScript腳本。 環境配置 系統:windows 平臺:visual studio code 語言:JavaScript 軟件:PhotoShop 2022 版本:23.2.1 概述 本文利用Java…

【Linux】System V - 基于建造者模式的信號量

目錄 信號量和P、V原語 信號量集結構體 信號量操作接口 semget semctl semop 封裝Sem 關于建造者模式 信號量和P、V原語 信號量和 P、V 原語由 Dijkstra &#xff08;迪杰斯特拉&#xff09;提出 信號量值含義 S>0: S 表?可?資源的個數 S0: 表??可?資源&a…

機器學習(11):嶺回歸Ridge

嶺回歸是失損函數通過添加所有權重的平方和的乘積(L2)來懲罰模型的復雜度。均方差除以2是因為方便求導&#xff0c;w_j指所有的權重系數, λ指懲罰型系數&#xff0c;又叫正則項力度特點:嶺回歸不會將權重壓縮到零&#xff0c;這意味著所有特征都會保留在模型中&#xff0c;但它…

調整Idea緩存目錄,釋放C盤空間

本文使用 Idea2024 Idea 會將一些配置默認緩存在C盤&#xff0c;使用久了會占用大量空間&#xff08;本人的Idea占用了將近5個G&#xff0c;以至于不得不進行遷移&#xff09; 緩存目錄主要涉及以下四個目錄&#xff0c;四個目錄可以分為兩組&#xff0c;每組目錄必須一起調整 …

手搓柵格工具-山體陰影

一、概述 山體陰影工具通過為柵格中的每個像元確定照明度&#xff0c;來獲取表面的假定照明度。 通過設置假定光源的位置并計算每個像元相對于相鄰像元的照明度值來實現此目的。 它可以顯著增強用于分析或圖形顯示的表面的可視化效果&#xff0c;尤其是在使用透明度時。 默認情…

Censtos docker安裝方法

#設置防火墻 systemctl stop firewalld.service setenforce 0 #安裝依賴包 yum install -y yum-utils device-mapper-persistent-data lvm2 #yum-utils&#xff1a;提供了 yum-config-manager 工具。 #device mapper&#xff1a; 是Linux內核中支持邏輯卷管理的通用設備映射機制…

單片機51 day46

單片機 一&#xff1a;基礎概念 一&#xff1a;單片機最小系統 單片機&#xff1a;電源時鐘&#xff08;晶振&#xff09;復位 //實現的最小組件 電源&#xff1a;5V直流 時鐘(晶振)&#xff1a;決定系統運行的速率 一般12M&#xff08;不超過50M&#xff09;&#xff0c…

【無標題】解鎖未來無線網絡的無限可能——Mesh自組網設備

在科技迅猛發展的今天&#xff0c;無線網絡已經成為了現代生活不可或缺的一部分。無論是在家庭中娛樂觀看視頻、在線游戲&#xff0c;還是在企業中進行辦公、遠程協作&#xff0c;網絡的穩定性和覆蓋范圍都直接影響著我們的使用體驗。傳統的Wi-Fi網絡在面臨多設備同時連接或大面…

Libevent(5)之使用教程(4)工具

Libevent(5)之使用教程(4)工具函數 Author: Once Day Date: 2025年8月3日 一位熱衷于Linux學習和開發的菜鳥&#xff0c;試圖譜寫一場冒險之旅&#xff0c;也許終點只是一場白日夢… 漫漫長路&#xff0c;有人對你微笑過嘛… 本文檔翻譯于&#xff1a;Fast portable non-blo…

Linux指令(3):

1. cal指令&#xff1a;我們的cal指令有日歷的意思看上面&#xff0c;我們輸入一個cal指令&#xff0c;可以查看當前月的日歷&#xff0c;我們給cal指令后面加上 - 3&#xff0c;他就會顯示這個月為中間的三個月的日歷&#xff0c;但是-4 不行&#xff0c;-5 也不行。只能 - 3。…

MLS平滑濾波

1.前言 最近在學習&#xff0c;因此查閱相關資料&#xff0c;該怎么表述感覺有些困難 2.代碼 2.1代碼1 使用全局坐標系 參考&#xff1a;python點云移動最小二乘法(Moving Least Squares)平滑_移動最小二乘法python-CSDN博客 def Moving_Least_Squares_Smoothing_v1_expla…

華為2288H V5服務器閃紅燈 無法開機案例

廣東某客戶1臺華為2288H V5服務器&#xff0c;由于單位外圍電力維修導致服務器有過一次異常斷電。結果來電之后發現服務器無法開機&#xff0c;開機面板上有個紅色心跳指示燈&#xff0c; 工程師到客戶現場后通過192.168.2.100登陸到2288H V5服務器的BMC管理口&#xff0c;打算…

SRIO入門之官方例程仿真驗證

仿真SRIO事務時序仿真之前先完成下面兩步操作&#xff1a;1.Vivado軟件版本2020.1&#xff0c;創建好工程及SRIO的IP核2.右鍵綜合化的IP核&#xff0c;然后選擇打開IP示例工程直接運行仿真分別將request和response兩個模塊添加到仿真窗口進行查看運行1000us左右就可以看到信號動…