声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2482|回复: 7

[图像处理] 数据文件名怎么输入

[复制链接]
发表于 2008-8-3 12:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
下面的程序在matlab中是可以运行的,但是输入界面提示:频域积分-输入数据文件名:
不知道该输入什么,请各位帮帮忙! 谢谢!
%频域积分
%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
%%%%%%%%%%%%%%%%%%
fni=input('频域积分-输入数据文件名:','s');
fid=fopen(fni,'r');
sf=fscanf(fid,'%f',1);%采样频率
fmin=fscanf(fid,'%f',1);%最小截止频率
fmax=fscanf(fid,'%f',1);%最大截止频率
c=fscanf(fid,'%f',1);%单位变换系数
it=fscanf(fid,'%f',1);%积分次数
sx=fscanf(fid,'%s',1);%横向坐标轴的标注
sy1=fscanf(fid,'%s',1);%纵向坐标轴输入单位的标注
sy2=fscanf(fid,'%s',1);%纵向坐标轴输出单位的标注
fno=fscanf(fid,'%s',1);%输出数据文件名
x=fscanf(fid,'%f',[1,inf]);%输入数据存成行向量
status=fclose(fid);
n=length(x);
%建立时间向量
t=0:1/sf:(n-1)/sf;
%大于并最接近n的2的幂次方为FFT长度
nfft=2^nextpow2(n);
%FFT变换
y=fft(x,nfft);
%计算频率间隔(Hz/s)
df=sf/nfft;
%计算指定频带对应频率数组的下标
ni=round(fmin/df+1);
na=round(fmax/df+1);
%计算圆频率间隔(rad/s)
dw=2*pi*df;
%建立正的离散圆频率向量
w1=0:dw:2*pi*(0.5*sf-df);
%建立负的离散圆频率向量
w2=2*pi*(0.5*sf-df):-dw:0;
%将正负圆频率向量组合成一个向量
w=[w1,w2];
%以积分次数为指数,建立圆频率变量向量
w=w.^it;
%进行积分的频域变换
a=zeros(1,nfft);
a(2:nfft-1) =y(2:nfft-1)./w(2:nfft-1);
if it == 2
%进行二次积分的相位变换
   y=-a;
else
%进行一次积分的相位变换
a1=imag(a);
a2=real(a);
y=a1-a2*i;
end
a=zeros(1,nfft);
%消除指定正频带外的频率成分
a(ni:na)=y(ni:na);
%消除指定负频带外的频率成分
a(nfft-na+1:nfft-ni+1)=y(nfft-na+1:nfft-ni+1);
%IFFT变换
y=ifft(a,nfft);
%取逆变换的实部n个元素并乘以单位变换系数为积分结果
y=real(y(1:n))*c;
%绘制几分钱的时程曲线图形
subplot(2,1,1);
plot(t,x);
xlabel(sx);
ylabel(sy1);
grid on;
%绘制积分后的时程曲线图形
subplot(2,1,2);
plot(t,y);
xlabel(sx);
ylabel(sy2);
grid on;
%打开文件输出积分后的数据
fid=fopen(fno,'w');
for k=1:n
     fprintf(fid,'%f \n',y(k));
end
status=fclose(fid);
回复
分享到:

使用道具 举报

发表于 2008-8-3 12:41 | 显示全部楼层
原帖由 dxg0558 于 2008-8-3 12:19 发表
下面的程序在matlab中是可以运行的,但是输入界面提示:频域积分-输入数据文件名:
不知道该输入什么,请各位帮帮忙! 谢谢!
%频域积分
%%%%%%%%%%%%%%%%%%%%%%%%%%
clear
clc
close all hidden
%%%%%%%%%%%%%%%% ...

如果数据文件在matlab的工作空间内,直接在命令窗口输入文件名,如data.txt;如果不在,则要输入完整的路径,如E:\MATLAB\data.txt。

评分

1

查看全部评分

 楼主| 发表于 2008-8-3 18:47 | 显示全部楼层

回复 2楼 的帖子

是的,
有劳了!
谢谢太子少傅!
发表于 2011-12-28 11:35 | 显示全部楼层
我的怎么不行 啊,我的也是类似的一个程序,也是平滑-输入数据文件名: 我桌面上有一个文件是data.TXT,我输入C:\data.TXT,运行结果是??? fid=fopen('fni','r'); 
                         |
Error: Missing variable or function.这是怎么回事啊
发表于 2011-12-28 11:48 | 显示全部楼层
clear
clc
close all hidden
fni=input('五点三次平滑处理-输入数据文件名:','s');
fid=fopen('fni','r'); 
sf=fscanf(fid,'%f',1);
it=fscanf(fid,'%d',1);
m=fscanf(fid,'%d',1);
fno=fscanf(fid,'%s',1);
x=fcanf(fid,'%f',[it,inf]);
status=fclose(fid);
n=length(x,(1,:));
for l=1:it
    a=x(l,:);
    for k=1:m
        b(1)=(69*a(1)+4*(a(2)+a(4))-6*a(3)-a(5))/70;
        b(2)=(2*(a(1)+a(5))+27*a(2)+12*a(3)-8*a(4))/35;
        for j=3:n-2
            b(j)=(-3*(a(j-2)+a(j+2))+12*(a(j-1)+a(j+1))+17*a(j))/35;
        end
        b(n-1)=(2*(a(n)+a(n-4))+27*a(n-1)+12a(n-2)-8*a(n-3))/35;
        b(n)=(69*a(n)+4*(a(n-1)+a(n-3))-6*a(n-2)-a(n-4))/70;
        a=b;
    end
    y(l,:)=a;
end
    if it==1
        nn=1:2000;
        t=0:1/sf:(n-1)/sf;
        plot(t(nn),x(nn),':',t(nn),y(nn));
        xlabel('时间(s)');
        ylabel('幅值');
        legend('平滑前','平滑后');
        grid on;
    else
        nn==1:256;
        f=0:sf/n:(n-1)*sf/n;
        subslot(2,1,1);
        plot(f(nn),x(1,nn),':',f(nn),y(1,nn));
        xlabel('频率((HZ)');
        ylabel('实部');
        legend('平滑前','平滑后');
        grid on;
        subslot(2,1,2);
        plot(f(nn),x(2,nn),':',f(nn),y(2,nn));
        xlabel('频率((HZ)');
        ylabel('虚部');
        legend('平滑前','平滑后');
        grid on;
    end
    fid=fopen(fno,'w');
    for k=1:n
        if it=1
            fprintf(fid,'%f%f\n',t(k),y(1,k),y(2,k));
        end
    end
    status=fclose(fid);
        这是五点三次平滑的程序,然后结果是五点三次平滑处理-输入数据文件名:我的一个数据文件data.TXT在C:\MATLAB7\work\data.TXT
,命令中输入C:\MATLAB7\work\data.TXT
怎么结果是??? fid=fopen('fni','r'); 
                         |
Error: Missing variable or function.
呀,请高人指点,我是刚刚学习MAtlab,谢谢了
发表于 2011-12-28 23:00 | 显示全部楼层
fid=fopen('fni','r'); => fid=fopen(fni,'r');
发表于 2011-12-29 09:45 | 显示全部楼层
回复 6 # ChaChing 的帖子

是的,是没有引号,但是改完之后结果仍然是??? fid=fopen(fni,'r'); 
                       |
Error: Missing variable or function.
这是怎么回事啊?愁死我了
发表于 2011-12-29 22:54 | 显示全部楼层
回复 7 # 小小猪052 的帖子

看看fid是否为-1 ?
确定路径真的有这档案!?
试过fid=fopen(fni,'r')没问题呀!:@)
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-6 16:51 , Processed in 0.259287 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表