24小时热门版块排行榜    

查看: 518  |  回复: 4

WOADD

新虫 (正式写手)

[求助] matlab程序求助 已有2人参与

load('data.mat')
a=zeros(24,1);
daynum = datenum(data(:,1),data(:,2),data(:,3));
ind = find(daynum>=datenum(1960,7,1) & daynum<datenum(1960,8,1)); %读取这一个月数据
month_data = data(ind,4:27);
med = median(month_data,1);  %求月中值
storm_ind = find(daynum==datenum(1960,7,16));  %读取磁暴时数据
a = data(storm_ind,4:27);
med(med==0)=nan;     %若值为0则去掉该点
a(a==0)=nan;
for t=1
    if  (any((a-med)/med>=0.15||(a-med)/med<=-0.15))    %要求变化大于15%
        t=t+1;
        if t>=4        %要求时间持续四个小时
            plot(med,'b-o');
            hold on
            plot (a,'r-*');
            xlabel('LT','FontSize',15);
            ylabel('NmF2','FontSize',15);
            title('1960年7月16日','FontSize',20);
            set(gca,'XLim',[0,24]);
            set(gca,'XTick',(0:6:24));
            set(gca,'XTickLabel',{'00:00','06:00','12:00','18:00','24:00'});
            set(gca,'YLim',[0,16]);
            legend('月中值','7月16日')
        else

        end
    end
end
这个程序要求磁暴时间持续大于等于4个小时,这里我写的有问题,有谁可以帮我改一下。
一次的磁暴事件,可能不止有一段时间大于四个小时,可能有几段时间,因为我刚开始接触程序,所以不太会写这个语句,请大家帮帮忙。
回复此楼

» 猜你喜欢

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

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

WOADD

新虫 (正式写手)

2楼2016-12-11 13:36:16
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chendequan

铁虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
建议上传 data.mat文件
QQ:516477448,真心帮助解决MATLAB相关问题,提供详细资料,Word文档明确具体问题及要求,尽力而为!
3楼2016-12-11 18:21:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

FMStation

至尊木虫 (知名作家)

【答案】应助回帖

感谢参与,应助指数 +1
https://www.mathworks.com/help/matlab/ref/for.html
CODE:
s = 10;
H = zeros(s);

for c = 1:s
    for r = 1:s
        H(r,c) = 1/(r+c-1);
    end
end

for v = 1.0:-0.2:0.0
   disp(v)
end

for v = [1 5 8 17]
   disp(v)
end

for I = eye(4,3)
    disp('Current unit vector:')
    disp(I)
end

https://www.mathworks.com/help/matlab/ref/if.html
CODE:
for c = 1:ncols
    for r = 1:nrows

        if r == c
            A(r,c) = 2;
        elseif abs(r-c) == 1
            A(r,c) = -1;
        else
            A(r,c) = 0;
        end

    end
end
A



limit = 0.75;
A = rand(10,1)

if any(A > limit)
    disp('There is at least one value above the limit.')
else
    disp('All values are below the limit.')
end

4楼2016-12-11 21:21:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

WOADD

新虫 (正式写手)

引用回帖:
4楼: Originally posted by FMStation at 2016-12-11 21:21:49
https://www.mathworks.com/help/matlab/ref/for.html

s = 10;
H = zeros(s);

for c = 1:s
    for r = 1:s
        H(r,c) = 1/(r+c-1);
    end
end

for v = 1.0:-0.2:0.0
   disp(v)
end

for ...

非常感谢

发自小木虫Android客户端
5楼2016-12-11 21:38:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 WOADD 的主题更新
信息提示
请填处理意见