PDA

查看完整版本 : [MATLAB基础] Matlab告警Integer operands are required for colon operator when used as index


lijinan
2011-05-31, 12:52
程序如下:
%清除本空间所有变量
%evalin('base','clear')用来清除基本空间变量
evalin('base','clear');
clear;
%清除命令窗口
clc;
%关闭所有画图窗口
close all;
%设置计算精度
format long;
%读取TFR导出的时间、电压量,其量均为列向量
[t ua ub uc]=textread('21T21-T6_LVUL1UL2UL3.txt','%f%f%f%f');
%矩阵转置,使其成为行向量
%t-0.01是因为0:0.01的值无效
t=t-0.01;
t=t';
ua=ua';
ub=ub';
uc=uc';
%获取采样频率
fs=1/(t(2)-t(1));
%设置fft分辨率为1
ua=ua(1:fs);
N=size(ua,2);
f0=fs/N;
%fft变换
Ua=fft(ua,N);
%fft分析后频率序列
f=f0*(0:1:((N/2)-1));
%fft分析后对应频率振幅序列
AM=abs(Ua)*2/N;
AM=AM(1:N/2);
%fft分析后对应频率相位序列
PH=angle(Ua);
PH=PH(1:N/2);
%信号对比
t1=t(1:1000);
ua1=ua(1:1000);
fua=zeros(1,1000);
for k=0:(N/2-1)
fua=fua+AM(k+1)*cos(2*pi*k*t1+PH(k+1));
end
plot(t1,ua1,'k',t1,fua,'r');
结果似乎是正确的,但是有三个地方告警:
uc=uc';
AM=AM(1:N/2);
PH=PH(1:N/2);
告警信息是“Integer operands are required for colon operator when used as index”
另外一个程序跟这个一样,仅仅是数据文件不一样,但是没有告警。
不知如何修改程序将该告警去掉?
谢谢。

lijinan
2011-05-31, 23:31
问题自己解决了;那个告警的问题在:
fs=1/(t(2)-t(1));
而不是matlab提示的地方。
改成fs=round(1/(t(2)-t(1)));