24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1668  |  回复: 5

xiaoguai2012

木虫 (正式写手)

[求助] 求助Matlab批处理for语句循环

cd('C:\0.6');%
Allname=struct2cell(dir);
[m,n]=size(Allname);
num1z=zeros(n-2,1);
for j=3:n
    name=Allname{1,j}; %
    [e1,e2,e3] = fileparts(name);
    e4='.txt';
    q=strcmp(e3, e4);
    if 1==q;
        break;
    end
    M=importdata(name,',',6);
    num1=0;CC=1;%变化cc值从0到10,间隔0.1
    for i=1:length(AA)-1;
       if AA(i)<CC&& AA(i+1)>CC ;
         num1=num1+1;
       end
    end
    end
   num1z(j-2,1)=num1;
end
   sum1=sum(num1z);
xlswrite('结果1.xlsx',[sum1],'Sheet1','A2');

----------------------------------------------------------------
我想用上述程序,对文件夹《0.6》内的文件进行批处理,在上述程序的基础上,我想变换CC值,从0到10,间隔0.1,然后输出不同CC值对应的sum1值,并将CC和sum1l列在excel表格中输出,请问各位大侠,怎样才能实现?我已经用for语句试了很多次,可是不行,请求各位大侠帮帮忙!!!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang870803

铜虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
jjdg: 金币+1, 感谢参与 2013-08-05 22:48:34
xiaoguai2012: 金币+5, 有帮助 2013-08-07 10:36:29
这个因为你输出语句:xlswrite('结果1.xlsx',[sum1],'Sheet1','A2');
是在循环以后,所以如果CC是一个数的话,只能输出最后一个。最简单的方法就是把CC改成一个向量。在前面先开辟一个CC=0:0.1:10;
2楼2013-08-04 23:46:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaoguai2012

木虫 (正式写手)

引用回帖:
2楼: Originally posted by wang870803 at 2013-08-04 23:46:23
这个因为你输出语句:xlswrite('结果1.xlsx',,'Sheet1','A2');
是在循环以后,所以如果CC是一个数的话,只能输出最后一个。最简单的方法就是把CC改成一个向量。在前面先开辟一个CC=0:0.1:10;

cd('C:\0.6');%
Allname=struct2cell(dir);
[m,n]=size(Allname);
num1z=zeros(n-2,1);
for ii=0:0.1:5
    CC=ii;%变化cc值从0到10,间隔0.1
for j=3:n
    name=Allname{1,j}; %
    [e1,e2,e3] = fileparts(name);
    e4='.txt';
    q=strcmp(e3, e4);
    if 1==q;
        break;
    end
    M=importdata(name,',',6);
    num1=0;
    for i=1:length(AA)-1;
       if AA(i)<CC&& AA(i+1)>CC ;
         num1=num1+1;
       end
    end
    end
   num1z(j-2,1)=num1;
end
   sum1=sum(num1z);
xlswrite('结果1.xlsx',[sum1],'Sheet1','A2');
end
vol(ii,1)=iii;
sum1z(ii,1)=sum1;
xlswrite('结果2.xlsx',[vol,sum1z],'Sheet1','A2');
---------------------------------------------------------------------------------
我的程序改成了这样,可是还是不成。程序在运行的时候会逐个输出不同的CC值和其对应的sum1值,但是前一个会被后一个替代,请问我怎样改才能把所有cc值和其对应的sum1值都输出在同一个excel中?
3楼2013-08-05 19:41:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang870803

铜虫 (初入文坛)

【答案】应助回帖

★ ★ ★ ★ ★
xiaoguai2012: 金币+5, 有帮助 2013-08-09 10:42:22
引用回帖:
3楼: Originally posted by xiaoguai2012 at 2013-08-05 19:41:03
cd('C:\0.6');%
Allname=struct2cell(dir);
=size(Allname);
num1z=zeros(n-2,1);
for ii=0:0.1:5
    CC=ii;%变化cc值从0到10,间隔0.1
for j=3:n
    name=Allname{1,j}; %
     = fileparts(name);
   ...

cd('C:\0.6');
Allname=struct2cell(dir);
[m,n]=size(Allname);
num1z=zeros(n-2,1);
CC=0:0.1:5;  %变化cc值从0到10,间隔0.1
sum1=zeros(1,length(CC));
for ii=1:length(CC)
    for j=3:n
        name=Allname{1,j};
        [e1,e2,e3] = fileparts(name);
        e4='.txt';
        q=strcmp(e3, e4);
        if 1==q
           break;
        end
        M=importdata(name,',',6);
        num1=0;
        for i=1:length(AA)-1
           if AA(i)<CC(ii)&& AA(i+1)>CC(ii)
              num1=num1+1;
           end
        end
    end
........

你的程序要么是你复制不完整,要么就是错了。至少多了一个end。我不知道你是如何把它运行起来的。
4楼2013-08-09 00:26:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiaoguai2012

木虫 (正式写手)

引用回帖:
4楼: Originally posted by wang870803 at 2013-08-09 00:26:42
cd('C:\0.6');
Allname=struct2cell(dir);
=size(Allname);
num1z=zeros(n-2,1);
CC=0:0.1:5;  %变化cc值从0到10,间隔0.1
sum1=zeros(1,length(CC));
for ii=1:length(CC)
    for j=3:n
        name=Al ...

不好意思,是我错了,应该是下面这样,现在主要是excel输出的问题,能输出,就是前一个输出的内容会被后一个输出的所代替。或者是因为程序中的错误,导致输出有问题。
cd('C:\0.65');%
Allname=struct2cell(dir);
[m,n]=size(Allname);
num1z=zeros(n-2,1);
for ii=0:0.1:5
    CC=ii;%变化cc值从0到10,间隔0.1
  for j=3:n
    name=Allname{1,j}; %
    [e1,e2,e3] = fileparts(name);
    e4='.txt';
    q=strcmp(e3, e4);
    if 1==q;
        break;
    end
    M=importdata(name,',',6);
    num1=0;
    for i=1:length(AA)-1;
       if AA(i)<CC&& AA(i+1)>CC ;
         num1=num1+1;
       end
    end
  
   num1z(j-2,1)=num1;
end
   sum1=sum(num1z);
xlswrite('结果1.xlsx',[sum1],'Sheet1','A2');
end
vol(ii,1)=iii;
sum1z(ii,1)=sum1;
xlswrite('结果2.xlsx',[vol,sum1z],'Sheet1','A2');
5楼2013-08-09 10:45:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wang870803

铜虫 (初入文坛)

【答案】应助回帖

引用回帖:
5楼: Originally posted by xiaoguai2012 at 2013-08-09 10:45:25
不好意思,是我错了,应该是下面这样,现在主要是excel输出的问题,能输出,就是前一个输出的内容会被后一个输出的所代替。或者是因为程序中的错误,导致输出有问题。
cd('C:\0.65');%
Allname=struct2cell(dir) ...

这个在循环里用xlswrite必然会被覆盖的,相当于每次新建一个文件往里写。可以将CC和sum1值都记下来,在循环外写文件。要在循环里写就只能用fopen+fprint了。下面是改过的程序,你可以参考一下。
cd('C:\0.65');
Allname=struct2cell(dir);
[m,n]=size(Allname);
num1z=zeros(n-2,1);

CC=0:0.1:5;  %变化cc值从0到10,间隔0.1
sum1=zeros(size(CC));

for ii=1:length(CC)
    for j=3:n
        name=Allname{1,j}; %
        [e1,e2,e3] = fileparts(name);
        e4='.txt';
        q=strcmp(e3, e4);
        if 1==q;
           break;
        end
        M=importdata(name,',',6);
        num1=0;
        for i=1:length(AA)-1;
            if AA(i)<CC(ii)&& AA(i+1)>CC(ii);
               num1=num1+1;
            end
        end
  
        num1z(j-2,1)=num1;
    end
    sum1(ii)=sum(num1z);
   
end
xlswrite('结果1.xlsx',sum1);        %这是按行写,要是想按列写先将sum1转置.

%下面的两句看不懂,而且按你原来程序,到这里ii已经是一个固定值5.0了
vol(ii,1)=iii;
sum1z(ii,1)=sum1;
xlswrite('结果2.xlsx',[vol,sum1z],'Sheet1','A2');
6楼2013-08-09 12:50:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 xiaoguai2012 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 297工科,求调剂? +10 河南农业大学-能 2026-04-12 10/500 2026-04-12 22:44 by lbsjt
[考研] 313求调剂 +5 余摆摆是大哥 2026-04-11 5/250 2026-04-12 10:34 by 猪会飞
[考研] 一志愿华中农微生物,288分,三年实验经历 +11 代fish 2026-04-09 11/550 2026-04-12 10:21 by Hayaay
[考研] 求调剂 +6 小聂爱学习 2026-04-11 9/450 2026-04-11 21:20 by 蓝云思雨
[考研] 296求调剂 +8 汪!?! 2026-04-09 8/400 2026-04-11 21:02 by 逆水乘风
[考研] 303求调剂 +14 SereinQ 2026-04-10 15/750 2026-04-11 20:43 by 蓝云思雨
[考研] 求调剂 +11 翩翩一书生 2026-04-09 11/550 2026-04-11 19:57 by 逆水乘风
[考研] 本人女孩 +7 吼吼, 2026-04-10 9/450 2026-04-11 14:45 by ACS Nano——
[考研] 求调剂 +10 璃茉一定上岸 2026-04-10 10/500 2026-04-11 13:31 by 1005715100
[考研] 282,求调剂 +12 jggshjkkm 2026-04-09 14/700 2026-04-11 09:39 by 猪会飞
[考研] 298求调剂 +9 钉叮咚冬瓜 2026-04-07 11/550 2026-04-11 09:35 by zhq0425
[考研] 22408调剂求助 +7 毂12 2026-04-09 9/450 2026-04-11 09:23 by 哦哦123
[材料工程] 材料调剂推荐 +8 蛋糕x2 2026-04-07 8/400 2026-04-10 23:13 by Ftglcn90
[考研] 本科211 工科085400 280分求调剂 可跨专业 +3 LZH(等待调剂中 2026-04-09 3/150 2026-04-09 21:29 by wutongshun
[考研] 278求调剂 +27 范婷娜 2026-04-07 31/1550 2026-04-09 20:49 by zhouxiaoyu
[考研] 334求调剂 +16 Riot2025 2026-04-08 17/850 2026-04-09 09:28 by wdyheheeh
[考研] 一志愿南科大生物学297分,求调剂推荐 +8 Y-yyusx 2026-04-06 9/450 2026-04-07 19:38 by biomichael
[考研] 325 调剂 +6 QQ小虾 2026-04-07 6/300 2026-04-07 15:17 by Ccclqqq
[考研] 287分求调剂 有专利国奖一志愿哈工大085406 +6 白易辰 2026-04-06 7/350 2026-04-06 22:46 by 875465
[考研] 求调剂到材料 +5 程9915 2026-04-06 5/250 2026-04-06 15:21 by yulian1987
信息提示
请填处理意见