Error in ==> Untitled at 23 y_z=y+noise; %将两个信号叠加成一个新的信号——加噪声处理
这个问题出在哪里?怎么解决?麻烦了[y,fs,bits]=wavread('C:\Users\Administrator\Desktop\lovesmenot.wav')...
这个问题出在哪里?怎么解决?麻烦了
[y,fs,bits]=wavread('C:\Users\Administrator\Desktop\loves me not.wav');
% sound(y,fs) % 回放语音信号
n=length(y) %选取变换的点数
y_p=fft(y,n); %对n点进行傅里叶变换到频域
f=fs*(0:n/2-1)/n; % 对应点的频率
figure(1)
subplot(2,1,1);
plot(y); %语音信号的时域波形图
title('原始语音信号采样后时域波形');
xlabel('时间轴')
ylabel('幅值 A')
subplot(2,1,2);
plot(f,abs(y_p(1:n/2))); %语音信号的频谱图
title('原始语音信号采样后频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
%对音频信号产生噪声
L=length(y) %计算音频信号的长度
noise=0.1*randn(L,2); %产生等长度的随机噪声信号(这里的噪声的大小取决于随机函数的幅度倍数)
y_z=y+noise; %将两个信号叠加成一个新的信号——加噪声处理
%sound(y_z,fs)
%对加噪后的语音信号进行分析
n=length(y); %选取变换的点数
y_zp=fft(y_z,n); %对n点进行傅里叶变换到频域
f=fs*(0:n/2-1)/n; % 对应点的频率
figure(2)
subplot(2,1,1);
plot(y_z); %加噪语音信号的时域波形图
title('加噪语音信号时域波形');
xlabel('时间轴')
ylabel('幅值 A')
subplot(2,1,2);
plot(f,abs(y_zp(1:n/2))); %加噪语音信号的频谱图
title('加噪语音信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
fp=1500;fc=1700;As=100;Ap=1;
wc=2*pi*fc/fs; wp=2*pi*fp/fs;
wdel=wc-wp;
beta=0.112*(As-8.7);
N=ceil((As-8)/2.285/wdel);
wn= kaiser(N+1,beta);
ws=(wp+wc)/2/pi;
b=fir1(N,ws,wn);
figure(3);
freqz(b,1);
x=fftfilt(b,y_z);
X=fft(x,n);
figure(4);
subplot(2,2,1);plot(f,abs(y_zp));
title('滤波前信号的频谱');
subplot(2,2,2);plot(f,abs(X));
title('滤波后信号频谱');
subplot(2,2,3);plot(y_z);
title('滤波前信号的波形')
subplot(2,2,4);plot(x);
title('滤波后信号的波形')
%sound(x,fs,bits) %回放滤波后的音频 展开
[y,fs,bits]=wavread('C:\Users\Administrator\Desktop\loves me not.wav');
% sound(y,fs) % 回放语音信号
n=length(y) %选取变换的点数
y_p=fft(y,n); %对n点进行傅里叶变换到频域
f=fs*(0:n/2-1)/n; % 对应点的频率
figure(1)
subplot(2,1,1);
plot(y); %语音信号的时域波形图
title('原始语音信号采样后时域波形');
xlabel('时间轴')
ylabel('幅值 A')
subplot(2,1,2);
plot(f,abs(y_p(1:n/2))); %语音信号的频谱图
title('原始语音信号采样后频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
%对音频信号产生噪声
L=length(y) %计算音频信号的长度
noise=0.1*randn(L,2); %产生等长度的随机噪声信号(这里的噪声的大小取决于随机函数的幅度倍数)
y_z=y+noise; %将两个信号叠加成一个新的信号——加噪声处理
%sound(y_z,fs)
%对加噪后的语音信号进行分析
n=length(y); %选取变换的点数
y_zp=fft(y_z,n); %对n点进行傅里叶变换到频域
f=fs*(0:n/2-1)/n; % 对应点的频率
figure(2)
subplot(2,1,1);
plot(y_z); %加噪语音信号的时域波形图
title('加噪语音信号时域波形');
xlabel('时间轴')
ylabel('幅值 A')
subplot(2,1,2);
plot(f,abs(y_zp(1:n/2))); %加噪语音信号的频谱图
title('加噪语音信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
fp=1500;fc=1700;As=100;Ap=1;
wc=2*pi*fc/fs; wp=2*pi*fp/fs;
wdel=wc-wp;
beta=0.112*(As-8.7);
N=ceil((As-8)/2.285/wdel);
wn= kaiser(N+1,beta);
ws=(wp+wc)/2/pi;
b=fir1(N,ws,wn);
figure(3);
freqz(b,1);
x=fftfilt(b,y_z);
X=fft(x,n);
figure(4);
subplot(2,2,1);plot(f,abs(y_zp));
title('滤波前信号的频谱');
subplot(2,2,2);plot(f,abs(X));
title('滤波后信号频谱');
subplot(2,2,3);plot(y_z);
title('滤波前信号的波形')
subplot(2,2,4);plot(x);
title('滤波后信号的波形')
%sound(x,fs,bits) %回放滤波后的音频 展开
1个回答
2016-07-05
展开全部
include <stdio.h>int main(){ int arr1[20], arr2[20], sum[20] = {0}; int count = 0, a, b, i, temp; scanf("%d %d", &a, &b); while (a != 0 || b != 0) { arr1[count] = a % 10; arr2[count] = b % 10; a /= 10; b /= 10; count++; } for (i = 0; i < count; i++) { temp = arr1[i] + arr2[i]; sum[i] += temp % 10; sum[i + 1] = temp / 10; } if (sum[count]) printf("%d", sum[count]); else printf("%d", sum[count - 1]); return 0;}把两个数拆开,每个位相加,处理进位。因为这是加法,所以结果的长度和两数中最长的那个相同,或者比它大1,if判断一下哪个是最高位就行了。sum存储的是两数和的每一位,它的所有元素的初始值都被置为0.
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询