| |
MATLAB程序
|
|
作者: yase1984
01-01 08:00
回复
|
|
S = input(‘ n- ‘); %输入数字个数
l = input(‘n0-‘);
Out = zeros(1600*s+1,1);
Tab = [941 1336;697 1209;697 1336;697 1477;770 1209;770 1336;770 1477;852 1209;852 1336;852 1477]; %建立表矩阵
for I = 1:s
k = input(‘0-9-‘); %输入具体的数字
f1 = tab(k+1,1)/8000; %对信号取样
f2 = tab(k+1,2)/8000;
for j = 1:800
z = sin(f1*j*2*pi)+sin(f2*j*2*pi); %两信号叠加
out(1600*(i-1)+j+1,1) = z;
out(1600*(i-1)+j+800+1,1) = 0;
end
end
out = out./2;
subplot(211);plot(out);
n = 256;
r = zeros(8*s,n/4);
a = out;
subplot(212);plot(a);
for I = 1:8*s
x = a((i-1)*200+1:i*200);
y = fft(x,n); %作FFT分析
p = abs(y); %计算幅频谱
r(I,:) = p(1:n/4);
end
for I = 1:8*s %以下是根据FFT分析结果,对信号解码
c = r(I,:);
z = find(c<40);
c(z )= zeros(size(z));
b = nnz(c);
if (b= =2)
q = find(c);
if (q(1) = = 23)
if (q(2) = = 40)
res(i) = 1;
elseif(q(2) = = 44)
res(i) = 2;
elseif(q(2 )= = 48)
res(i) = 3;
end
elseif(q(1) = = 26)
if(q(2) = = 40)
res(i) = 4;
elseif(q(2) = = 44)
res(i) = 5;
elseif(q(2) = = 48)
res(i) = 6;
end
elseif(q(1) = = 28)
if(q(2) = = 40)
res(i) = 7;
elseif(q(2) = = 44)
res(i) = 8;
elseif(q(2) = = 48)
res(i) = 9;
end
elseif(q(1) = = 31)
if(q(2) = = 44)
res(i) = 0;
end
end
else
res(i) = NaN;
end
end
res = res
这个程序老是运行不出来,希望高手帮我看看 |
|
| |
回复:MATLAB程序
|
|
作者: 化学工程
01-01 08:00
回复
|
|
程序通了。不知道大写I和小写i是不是一个概念,都改成小写i了。Out改成out,S改成s等。
%S = input( 'n-'); %输入数字个数
%l = input('n0-');
clc;clear;
s=3,l=2
out = zeros(1600*s+1,1);
tab = [941 1336;697 1209;697 1336;697 1477;770 1209;770 1336;770 1477;852 1209;852 1336;852 1477]; %建立表矩阵
for i = 1:s
%k = input('0-9-'); %输入具体的数字
k=5
f1 = tab(k+1,1)/8000; %对信号取样
f2 = tab(k+1,2)/8000;
for j = 1:800
z = sin(f1*j*2*pi)+sin(f2*j*2*pi); %两信号叠加
out(1600*(i-1)+j+1,1) = z;
out(1600*(i-1)+j+800+1,1) = 0;
end
end
out = out./2;
subplot(2,1,1);plot(out);
n = 256;
r = zeros(8*s,n/4);
a = out;
subplot(2,1,2);plot(a);
for i = 1:8*s
x = a((i-1)*200+1:i*200);
y = fft(x,n); %作FFT分析
p = abs(y); %计算幅频谱
r(i,:) = p(1:n/4);
end
for i = 1:8*s %以下是根据FFT分析结果,对信号解码
c = r(i,:);
z = find(c<40);
c(z )= zeros(size(z));
b = nnz(c);
if (b==2)
q = find(c);
if (q(1) == 23)
if (q(2) == 40)
res(i) = 1;
elseif(q(2) == 44)
res(i) = 2;
elseif(q(2 )== 48)
res(i) = 3;
end
elseif(q(1) == 26)
if(q(2) == 40)
res(i) = 4;
elseif(q(2) == 44)
res(i) = 5;
elseif(q(2) == 48)
res(i) = 6;
end
elseif(q(1) == 28)
if(q(2) == 40)
res(i) = 7;
elseif(q(2) == 44)
res(i) = 8;
elseif(q(2) == 48)
res(i) = 9;
end
elseif(q(1) == 31)
if(q(2) == 44)
res(i) = 0;
end
end
else
res(i) = NaN;
end
end
res = res |
|
| |
回复:MATLAB程序
|
|
作者: ryolzlzlz
06-04 15:13
回复
|
|
请看看你的电脑的配置环境和程序是否存在着逻辑错误,
实在检查不出来就看看运行时是否有程序报错现象!
程序本生的语法错误也可能导致程序运行不出来!
你这样应该是属于运行时错误的!
拿相关的软件编写方法看看吧! |
|
|