matlab中怎么注释

matlab中怎么注释,第1张

matlab中释选择你要注释的段落,然后Ctrl+R,整段的前面就都被加上了注释符“%”。

MATLAB是美国MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分。

如果没看错是再求信号的功率谱,

Fs=2048;

%

设定采样点数

FFTN=1024;

%设定FFT点数

t=(0:1023)/Fs;

%

设定正弦信号的采样时间点

x=2sin(2pi256t+pi/8);

%

产生正弦信号

y=fftshift(fft(x,FFTN));

%这句没太看懂,应该是求信号的功率谱,但结果是复数,需取模,这句需楼主在核实下

yam=abs(y)2/FFTN;

%需取模,

f=((0:FFTN-1)-FFTN/2)Fs/FFTN;

%设定画图时的横坐标,Hz为单位

figure(1);plot(f,yam);xlabel('f(Hz)');ylabel('幅值');

%

以横坐标Hz,纵坐标取模结果,画图,

[amax

index]=max(yam);

%取纵坐标最大值和序号

gmax=angle(y(index));

%这句也没太看,取出模值最大值进行什么处理,

fmax=f(index);

%取出模值最大点对应的频率值

以上除了标注的,其他应该没问题,楼主在看看那两句吧,查查matlab的help

%基本减谱法

clear;

%[xx,fs]=wavread('E:\mywhisper\shuwav');

%[xx,fs]=wavread('E:\speech\x\w1xun_01wav');

%[xx,fs]=wavread('E:\speech\耳语音切割\b\w1ba_5');

[xx,fs]=wavread('D:\yuanwav');% 读取音频文件yuanwav,并返回采样数据给变量xx及采样率Fs

[team,row]=size(xx);%将数组xx的行数赋给team,列数赋给row

if row==2

x=(xx(:,1)+xx(:,2))/2;

yy=x;

%如果语音信号xx为2列,即信号为双声道,则将其转换成单声道信号,即取两列的平均值赋给x,并将x的值赋给yy

else

x=xx;

yy=x;

%若语音信号xx为单声道,则将xx的值赋给x,并将x的值赋给yy

end

x=x-mean(x)+01rand(length(x),1

N=length(x);%将语音信号长度赋给变量N

n=220;%对语音信号进行分帧,帧长为220

n1=160;%帧移为160

frame=floor((N-n)/(n-n1));%将分帧数赋给变量frame

%frame=floor(N/n);

for i=1:frame

y1=x((i-1)(n-n1)+1:(i-1)(n-n1)+n)hamming(n);

%对每段分帧进行加窗处理

fy=fft(y1,n);

nen(i,:)=abs(fy)^2;% 将频域信号功率赋给矩阵变量nen

ang(i,:)=angle(fy);%将频域信号的相位角赋给矩阵变量ang

end

yuzhi=sum(sum(nen(2:5,:)))/(4n);

for i=1:frame

nen(i,:)=nen(i,:)-yuzhi;

nen(i,find(nen(i,:)<0))=0;

%chuli=nen(i,1:n/2);

%chuli=chuli-yuzhi;

%chuli(find(chuli<0))=0;

%nen(i,:)=[chuli,fliplr(chuli)];

% nen(i,:)=filter(1,[05 05],nen(i,:));

% nen(i,find(nen(i,:)<0))=0;

end

for i=1:frame

nen(i,:)=sqrt(nen(i,:));%将纯语音功率谱开根,得到频域值

jie=nen(i,:)exp(jang(i,:));

out(i,:)=real(ifft(jie))/hamming(n)'; %对纯语音频谱进行逆傅里叶变换,并取其实部,并进行去窗处理

end

zong=out(1,:)';%将第一帧中未重叠部分记入数组zong

jiewei=n;

for i=2:frame

zong(jiewei-n1+1:jiewei)

=(zong(jiewei-n1+1:jiewei)+out(i,1:n1)')/2;

jiewei=jiewei+n-n1;% 使指针jiewei依次指向下一帧的帧尾

zong=[zong;out(i,n1+1:end)'];将从第二帧开始的每一帧中未重叠部分记入数组zong

end

%zong=out(1,:)';

%for i=2:frame

%zong=[zong;out(i,:)'];

%end

%

%for i=1:frame

% zong=[zong,nen(i,:)'];

% zong(i(n-n1)+1:(i-1)(n-n1)+n)

=zong(i(n-n1)+1:(i-1)(n-n1)+n)/2;

figure(1); %创建图1

subplot(211); %把图形窗口分成21个小窗口,取第1个小窗口

plot(x);%以数组x绘图基本二维曲线

axis([1,(n-n1)frame+n,min(x),max(x)]);% 对当前二维图形对象的X轴和Y轴进行标定,x轴的范围为1到最后一个分帧结尾,y轴的范围为带噪语音时域最小值到最大值

subplot(212); %把图形窗口分成21个小窗口,取第2个小窗口

specgram(x,fs,1024,n,n1);%画出语音的语谱图

figure(2); %创建图2

subplot(211); %把图形窗口分成21个小窗口,取第1个小窗口

plot(zong); %以数组zong绘图基本二维曲线

axis([1,(n-n1)frame+n,min(zong),max(zong)]); % 对当前二维图形对象的X轴和Y轴进行标定,x轴的范围为1到最后一个分帧结尾,y轴的范围为纯语音时域最小值到最大值

subplot(212); %把图形窗口分成21个小窗口,取第2个小窗口

specgram(zong,fs,1024,n,n1); %画出语音的语谱图

wavplay(x,fs);%播放单声道带噪语音音频

wavplay(zong,fs);%播放单声道纯净语音音频

% 无裂纹信号程序

clear all; % 清除历史记录

N1=4000; % 给定N1值为4000;

fs=5120; % 采样频率为5120

load 'd:\nn4txt'; % 读取d:\nn4txt这个文本文档,nn4是文件名,d表示这个文件在d盘

x=nn4(1:N1); % 读取这个文本中的前N1个数并将其附值给变量x

Num=length(x); % 求x的长度,其实这里他写的有点多余,完全可以用N1

t=(0:Num-1)/fs; % 给出时间序列,用点0,1,2Num-1分别除以采样频率fs得到离散时间点,其长度为Num

figure(1); % 第一个图像,

subplot(1,1,1) % 画第一张图,其实这里也没必要这么写,这个式中括号中前两个1指画1行1列总共也就是1个图,要是suplot(2,2,1)就是指一共要画四个图,图以2行2列排列,这里画册的是第一个。

plot(1000t(1:200),x(1:200),'k'); % 这是具体画的 *** 作函数,前面两个一个是生成图,然后指定几张图,如何排列,这个是画,画的是以时间t为横轴,x值为Y轴,点数为200点。前面的乘1000是把秒转换为毫秒

title('解调前的时域波形','FontSize',12); % 图的标题为 解调前的时域波形

xlabel('时间(毫秒)', 'FontSize',12); % 标注,横坐标为时间(毫秒)字体为FontSize,12,其中Fontsize指的是一种字体

grid; % 网格,指图中网格可见,可以是grid on;也可以是grid off;不写就是前种

Y = fft(x,Num); % 将时域信号进行傅立叶变换

Pyy = Y conj(Y) / Num; % 求频幅,至于为什么要除以Num就是为了有一个标量进行对比。其实更常用的是这样Pyy=abs(Y)/max(abs(Y))

f = fs(0:Num/2)/Num; % 求其离散频率点。

figure(2); %生成第二个图

subplot(1,1,1); % 画第二个图,和上面的一样,

plot(f,Pyy(1:Num/2+1),'k'); % 画频谱图,

title('Power spectrum','FontSize',12); %标题

xlabel('frequency (Hz)','FontSize',12); %标坐标标注

grid; %如上

y1=cos(2314159261640t); %cos(2314159261640t);% 1640为激励频率,调幅波进行解调

y=x(y1'); % 用上面生成的信号和原信号对应点相乘,也就是所谓的调制,成成调制后的信号

% y=xcos(2314159261640t);

sum=0; % 生成新变量sum并给定其初值为0

for i=1:length(y); % 循环

sum=sum+y(i); % 这个循环的作用就是求y的总和,其实也可以写成sum=sum(y)

end

y=y-sum/length(y); % 这是一个数据预处理的过程,让信号的离散点分别减去所有点相加后除以总个数的平均值,数据处理上的东西,也不太懂,反正就是把信号先处理一下,

figure(3); %生成第三个图,

subplot(1,1,1); %同上

plot(1000t(1:200),abs(y(1:200)),'k');%同上

title('解调后的时域波形','FontSize',12);%同上

xlabel('时间(毫秒)', 'FontSize',12);%同上

grid;%同上

Y = fft(y,Num);

Pyy = Y conj(Y) / Num;

f = fs(0:Num/2)/Num;

figure(4);

plot(f,Pyy(1:Num/2+1),'k');

title('Power spectrum','FontSize',12);

xlabel('frequency (Hz)','FontSize',12);

grid;

% 这一大锻就是画图,具体和上面一样,

%有裂纹信号程序

clear all; %%下面的程序和上面的基本一样,我想没有必要再一一标注。

N1=4000;

fs=5120;

load 'd:\cc4txt';

x=cc4(1:N1);

Num=length(x);

t=(0:Num-1)/fs;

figure(1);

subplot(1,1,1)

plot(1000t(1:200),x(1:200),'k');

title('解调前的时域波形','FontSize',12);

xlabel('时间(毫秒)', 'FontSize',12);

grid;

Y = fft(x,Num);

Pyy = Y conj(Y) / Num;

f = fs(0:Num/2)/Num;

figure(2);

subplot(1,1,1);

plot(f,Pyy(1:Num/2+1),'k');

title(' Power spectrum ','FontSize',12);

xlabel('frequency (Hz)','FontSize',12);

grid;

y1=cos(2314159261640t);%cos(2314159261640t); % 1640为激励频率,调幅波进行解调

y=x(y1');

% y=xcos(2314159261640t);

sum=0;

for i=1:length(y);

sum=sum+y(i);

end

y=y-sum/length(y);

figure(3);

subplot(1,1,1);

plot(1000t(1:200),abs(y(1:200)),'k');

title('解调后的时域波形','FontSize',12);

xlabel('时间(毫秒)', 'FontSize',12);

grid;

Y = fft(y,Num);

Pyy = Y conj(Y) / Num;

f = fs(0:Num/2)/Num;

figure(4);

plot(f,Pyy(1:Num/2+1),'k');

title(' Power spectrum ','FontSize',12);

xlabel('frequency (Hz)','FontSize',12);

grid;

ones(m,n)生成m×n的全一矩阵,矩阵所有元素都是1

[ones(m,n),ones(m,n)]把两个矩阵并列起来合成一个m×2n的矩阵 加个‘表示转置

成为一个2n×m的其中元素全为1的矩阵

K1x1'就是这两个矩阵相乘

plot是图形输出命令 以t1为横坐标 u1(1,;)表示u1矩阵的第一行,以它为纵坐标绘图显示

plot(t1,u1(1,:),'k',t1,u1(2,:),'k--')画两条线 分辨 t1横坐标 u1(1,:)纵坐标 以及t1横坐标u1(2,:)纵坐标

‘k--’表示对图中线条样式的定制 ’k‘是黑色 “--”表示虚线(默认是实线) 单独‘k'表示黑色实线

以上就是关于matlab中怎么注释全部的内容,包括:matlab中怎么注释、matlab中fft()用法、基本谱减法进行语音增强的matlab程序求注释等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9696935.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存