24小时热门版块排行榜    

Znn3bq.jpeg
查看: 1669  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 考研求调剂 +5 子木呐 2026-04-12 5/250 2026-04-12 22:15 by paopaotu326
[考研] 272分材料子求调剂 +40 Loy0361 2026-04-10 52/2600 2026-04-12 19:23 by laoshidan
[考研] 求调剂 +18 MAX怅惘 2026-04-09 20/1000 2026-04-11 23:31 by zhen~
[考研] 269电子信息求调剂,可转专业 +11 独酌wl 2026-04-06 11/550 2026-04-11 11:12 by 逆水乘风
[考研] 087100初试311求调剂 +4 任雅琴 2026-04-09 4/200 2026-04-11 10:33 by zhq0425
[考研] 275求调剂 +9 1624447980 2026-04-08 10/500 2026-04-11 10:20 by Delta2012
[考研] 广东省 085601 329分求调剂 +14 Eddieddd 2026-04-10 14/700 2026-04-11 09:58 by bljnqdcc
[考研] 一志愿东北大学控制工程085406数二英二385,求调剂 +8 Ezra_Zhang 2026-04-09 8/400 2026-04-11 09:15 by 猪会飞
[考研] 346,工科0854求调剂,专硕 +7 moser233 2026-04-10 8/400 2026-04-11 08:52 by 猪会飞
[考研] 083200 305分 求二轮调剂 不接受跨专业 +9 Claireyyyy 2026-04-09 10/500 2026-04-10 21:21 by Claireyyyy
[考研] 287求调剂 +15 Fnhc 2026-04-07 21/1050 2026-04-10 19:09 by chemisry
[论文投稿] mdpi小修rvr时间四五天了 20+3 哈哈high 2026-04-08 5/250 2026-04-10 16:02 by 北京莱茵润色
[考研] 301求调剂 +5 149. 2026-04-10 5/250 2026-04-10 15:45 by 柴小白
[考研] 0702物理学学硕299求调剂 +6 祁柒连 2026-04-06 6/300 2026-04-10 11:10 by Roomoo
[考研] 070300化学 求调剂 +13 73372112 2026-04-08 13/650 2026-04-09 20:22 by maddjdld
[考研] 材料307分求大佬组收留 +17 Hll胡 2026-04-07 17/850 2026-04-09 10:53 by liuhuiying09
[考研] 招收有机化学、化工,药学,食品灯专业学生 +3 yrfhjgdj 2026-04-08 3/150 2026-04-09 10:15 by QYQX_123
[考研] 软件工程求调剂22软工296分求调剂,接受跨调 +4 yangchen2017 2026-04-08 5/250 2026-04-08 21:56 by 土木硕士招生
[考研] 275 求调剂 +8 Lei812514 2026-04-07 8/400 2026-04-08 12:46 by chemisry
[考研] 一志愿西电085401求调剂 +4 sunw1306 2026-04-07 4/200 2026-04-07 16:40 by 啵啵啵0119
信息提示
请填处理意见