Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-05-31, 12:52   #1
lijinan
初级会员
 
注册日期: 2009-08-31
帖子: 4
声望力: 0
lijinan 正向着好的方向发展
默认 Matlab告警Integer operands are required for colon operator when used as index

程序如下:
%清除本空间所有变量
%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”
另外一个程序跟这个一样,仅仅是数据文件不一样,但是没有告警。
不知如何修改程序将该告警去掉?
谢谢。

此帖于 2011-05-31 12:54 被 lijinan 编辑。
lijinan 当前离线   回复时引用此帖
旧 2011-05-31, 23:31   #2
lijinan
初级会员
 
注册日期: 2009-08-31
帖子: 4
声望力: 0
lijinan 正向着好的方向发展
默认 回复: Matlab告警Integer operands are required for colon operator when used as index

问题自己解决了;那个告警的问题在:
fs=1/(t(2)-t(1));
而不是matlab提示的地方。
改成fs=round(1/(t(2)-t(1)));
lijinan 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:33


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.