Matlab:用于存储数据的简单循环,以便稍后进行平均和绘制

时间:2016-08-19 04:57:57

标签: matlab

我在matlab中真的很生气。我正在尝试制作一些简单的循环来存储要在以后平均的数据。为简单起见,假设我有一个包含此数据的cvs文件:

日,秒,椅子,桌子 1,1.4,38,54 2,0,45,72
3,1,37,60
1,0,45,72

我想把第1天的每一次出现都放到一个垃圾箱里,包括剩下的那一行,然后将所有第1天的椅子,桌子和秒放平。

这是我打开csv文件后的代码,但它不是在读取我的'if'循环。

day= data(:,1);
sec= data(:,2);
chair= data(:,3);
table= data(:,4);

for m = 1:length(data);
    if day==1;
        sec1(:,1)=sec(:,1);
        chair1(:,1)= chair(:,1);
        table1(:,1)= data(:,1);
    end
end

另外,我知道我需要在循环中收集数据,但又忘记了如何,我试图查找的例子没有帮助。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

此示例代码修复了我认为是您的错误。

data = [1 1.4 38 54; ...
        2 0   45 72; ...
        3 1   37 60; ...
        1 0   45 72];

day= data(:,1);
sec= data(:,2);
chair= data(:,3);
table= data(:,4);

sec1 = [];
chair1 = [];
table1 = [];

for m = 1:size(data,1);
    if day(m)==1;
        sec1(end+1,1)=sec(m,1);
        chair1(end+1,1)= chair(m,1);
        table1(end+1,1)= data(m,1);
    end
end

以下以更精简的形式提供相同的结果

data = [1 1.4 38 54; ...
        2 0   45 72; ...
        3 1   37 60; ...
        1 0   45 72];

day= data(:,1);
sec= data(:,2);
chair= data(:,3);
table= data(:,4);

sec1 = sec(day==1,1);
chair1 = chair(day==1,1);
table1 = table(day==1,1);