Labfans是一个针对大学生、工程师和科研工作者的技术社区。 | 论坛首页 | 联系我们(Contact Us) |
![]() |
![]() |
#1 |
初级会员
注册日期: 2009-08-31
帖子: 4
声望力: 0 ![]() |
![]()
程序如下:
%清除本空间所有变量 %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 编辑。 |
![]() |
![]() |
![]() |
#2 |
初级会员
注册日期: 2009-08-31
帖子: 4
声望力: 0 ![]() |
![]()
问题自己解决了;那个告警的问题在:
fs=1/(t(2)-t(1)); 而不是matlab提示的地方。 改成fs=round(1/(t(2)-t(1))); |
![]() |
![]() |