使用Matlab绘制正弦信号

2023-11-16

产生一个正弦波,进行傅里叶变换,并绘图展示时域和频域
该正弦波的函数表示是
  y = s i n ( ω 0 t )   \ y=sin(\omega_0 t) \  y=sin(ω0t) 
在matlab中需要敲入公式
  f = s i n ( 2 π f 0 n T s )   \ f = sin(2\pi f_0nT_s) \  f=sin(2πf0nTs) 
  T s   \ T_s \,  Ts为采样周期,   f s   \ f_s\,  fs为采样频率,   T s = 1 / f s   \ T_s=1/f_s\,  Ts=1/fs
  ω 0 = 2 π f 0   \ \omega_0=2\pi f_0 \,  ω0=2πf0
  f s ≥ 2 f 0   \ f_s\geq 2f_0\,  fs2f0此处的   f 0   \ f_0\,  f0为中心频率

%% 产生一个正弦波,进行傅里叶变换,并绘图展示时域和频域
close all;clear;
%% 参数
N = 2000;
n = 1:1:N;
fs = 1000;
Ts = 1/fs;
f_0 = 100;%中心频率,也就是信号的频率
%% 时域信号
f = sin(2*pi*f_0*n*Ts);
%% 绘图
figure(1);

subplot(3,1,1)
plot(n/fs,f);%时域,plot(t,f)的横坐标是10,polt(f)的横坐标是1000
xlabel('t/s');title('时域信号');

ff = fft(f);
subplot(3,1,2);
plot(fs*n/N,abs(ff)/N);%频域
xlabel('Hz');title('频域');

subplot(3,1,3)
k = -(N-1)/2:(N-1)/2;%将原点移动到横坐标中心
plot(fs*k/N,abs(fftshift(ff))/N);%fftshift将零频分量移动到数组中心
xlabel('Hz');title('频域(零点在中间)');

在这里插入图片描述

法二

clear;clc;close all;
fs = 1000;%采样率
t=0:1/fs:1-1/fs;%0-1
Ts=1/fs;
f0=100;
y = sin(2*pi*f0*t);

figure(1);
subplot(2,1,1);
plot(t,y);
xlabel("t/s");

subplot(2,1,2);
y_f=fft(y);
plot(abs(y_f));
xlabel("f/Hz");

在这里插入图片描述
代码三:

  1. 生成正弦信号,进行傅里叶变换,标准化横轴
  2. 生成一个矩形信号,进行傅里叶变换观察,将矩形信号和正弦信号进行相乘,观察时域,相乘后的信号进行傅里叶变换,观察可知,实现了对矩形信号的频谱搬移。
clear ;close all;clc;
%% 正弦信号的时域和频域
f=1000;%采样频率,不是函数的频率
t=0:1/f:10-1/f;
y=sin(2*pi*25*t);
y_f=fft(y);
y_f_2=fftshift(y_f);

figure;
subplot(3,1,1);%时域信号
plot(t,y);  
h = (0:length(y)-1)*f/length(y);
subplot(3,1,2);%频域信号
plot(h,abs(y_f));
subplot(3,1,3);%以0为中心
n=length(y);
h_s = (-n/2:n/2-1)*(f/n);
plot(h_s,abs(y_f_2));  

%% 混频,频谱搬移
rect=zeros(1,length(t));
for i=4500:1:5500
    rect(i)=1;
end
figure;
subplot(3,1,1);%矩形信号频域
rect_f=fft(rect);
plot(abs(fftshift(rect_f)));
subplot(3,1,2);%矩形信号*余弦信号
mult = rect.*y;

plot(mult);
subplot(3,1,3);%矩形信号*余弦信号的频域
mult_f=fft(mult);
plot(h_s,abs(fftshift(mult_f)));

    


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用Matlab绘制正弦信号 的相关文章

  • 在 Matlab 中对列进行排序

    我有 2 列使用 textscan 导入的数据 数据看起来像这样 其中U is undetect and D is detect mydata 51 U 57 D 48 U 47 D my data 4x1 double 4x1 char
  • MATLAB 中的抗锯齿线和标记

    您好 我在 MATLAB 中有一张图像 我希望这条线是平滑的 看看从 0 4 到 0 8 的线 这太可怕了 当在图中使用 LineSmoothing on 运算符时 我得到了这个 我在线条上做得很好 但它也使标记变得平滑 而且它们太可怕了
  • Microsoft Visual C++ 2008 和 R2007b 的 Mex 类型

    我想对 vs2008 和 matlab2007b 使用 mex 类型 我尝试了下面的代码 include
  • 如何读取 10 位原始图像?其中包含 RGB-IR 数据

    我想知道如何从我的 10 位原始 它有 rgb ir 图像数据 数据中提取 RGB 图像 如何使用 Python 或 MATLAB 进行阅读 拍摄时的相机分辨率为 1280x720 室内照片图片下载 https drive google c
  • Matlab 编辑器不使用 emacs 快捷方式

    Is there some way I can make the matlab integrated editor not use emacs shortcut but use more normal shortcuts such that
  • opencv中矩阵的超快中值(与matlab一样快)

    我正在 openCV 中编写一些代码 想要找到一个非常大的矩阵数组 单通道灰度 浮点数 的中值 我尝试了几种方法 例如对数组进行排序 使用 std sort 和选择中间条目 但与 matlab 中的中值函数相比 它非常慢 准确地说 在 ma
  • 在 C/C++ 中调用 MATLAB API

    我刚刚从某处听说 对于数值计算 MATLAB 确实提供了一些用户友好的 API 如果你在 C C 代码中调用这些 API 你可以显着加快计算速度 但我在MATLAB文档中没有找到这样的信息 例如http www mathworks com
  • 估算缺失数据,同时强制相关系数保持不变

    考虑以下 excel 数据集 m r 2 0 3 3 0 8 4 0 1 3 2 1 5 2 2 3 1 9 2 5 1 2 3 0 2 0 2 6 我的目标是使用以下条件填充缺失值 将上述两列之间的成对相关性表示为 R 大约 0 68 将
  • 在 Matlab 中快速加载大块二进制文件

    我有一些相当大的 int16 格式的数据文件 256 个通道 大约 75 1 亿个样本 每个文件约 40 50 GB 左右 它以平面二进制格式编写 因此结构类似于 CH1S1 CH2S1 CH3S1 CH256S1 CH1S2 CH2S2
  • python 正弦和余弦精度

    如何提高Python正弦和余弦精度 例如 我想使用以下代码 只需计算随机复向量 x 的 y cos acos x import numpy as np N 100000 x np zeros N 1j np zeros N for k in
  • 频域和空间域的汉明滤波器

    我想通过在 MATLAB 中应用汉明滤波器来消除一维信号中的吉布斯伪影 我所拥有的是k1这是频域中的信号 我可以通过应用 DFT 来获取时域信号k1 s1 ifft ifftshift k1 该信号具有吉布斯伪影 现在 我想通过 A 乘以汉
  • 单元格的 Fieldnames 函数的等效项

    正如标题所说 只是想知道是否有一个函数可以用作字段名 http www mathworks co uk help matlab ref fieldnames html 但适用于单元格 所以如果我有类似的东西 a imread redsqua
  • MATLAB - GUI 和 OPC 服务器

    我想在 MATLAB 中设计一个图形用户界面 可以使用 MATLAB 的过程控制对象链接和嵌入 OPC 工具箱连续读取数据 我怎样才能实现这个 我已经设计了图形用户界面 但我无法将数据读入图形用户界面 就这样做 type opctoolMA
  • 在Matlab中选择图像上的像素时,索引指的是什么?

    当在Matlab中查看图像的单个像素时 该索引指的是什么 X Y 指的是像素的坐标 RGB 指的是颜色 但是关于索引是什么有什么想法吗 为了澄清一下 当我在 Matlab 中查看图形并使用数据光标选择一个点时 显示的三行是 X Y 指数 R
  • 检查图像中是否有太薄的区域

    我正在尝试验证雕刻机的黑白图像 更多的是剪贴画图像 不是照片 我需要考虑的主要事情之一是区域的大小 或线条的宽度 因为机器无法处理太细的线条 所以我需要找到比给定阈值更细的区域 以此图为例 竖琴的琴弦可能太细而无法雕刻 我正在阅读有关 Ma
  • 在 Matlab 的命令窗口中获取旧式帮助

    问题的简短版本 在最新版本的 Matlab 中 我在 Windows 上的 R2014b 和 R2015a 中看到过 当您键入help foo你得到一个简要描述 简介函数及其签名 例如 输入help bsxfun产生类似这样的东西 只有更好
  • 在Matlab中对字符进行分组并形成矩阵

    我有 26 个字符 A 到 Z 我将 4 个字符组合在一起 并用空格分隔以下 4 个字符 如下所示 abcd efgh ijkl mnop qrst uvwx yz 我的Matlab编码如下 str abcdefghijklmnopqrst
  • 如何在Matlab中绘制网络?

    我有一个矩阵AMatlab中的维数mx2每行包含两个节点的标签 显示网络中的直接链接 例如 如果网络有4矩阵的节点A可能A 1 2 1 3 2 1 2 4 3 2 4 1 4 2 其中第一行表示有一个链接来自1 to 2 第二行表示有一个链
  • 从 MATLAB 调用 Java?

    我想要Matlab程序调用java文件 最好有一个例子 需要考虑三种情况 Java 内置库 也就是说 任何描述的here http docs oracle com javase 6 docs api 这些项目可以直接调用 例如 map ja
  • 如何在Matlab中打印带有千位分隔符的整数?

    我想使用逗号作为千位分隔符将数字转换为字符串 就像是 x 120501231 21 str sprintf 0 0f x 但随着效果 str 120 501 231 21 如果内置fprintf sprintf做不到 我想可以使用正则表达式

随机推荐