首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获取趋势矩阵,matlab (概念)

获取趋势矩阵,matlab (概念)
EN

Stack Overflow用户
提问于 2013-01-02 23:50:09
回答 1查看 133关注 0票数 0

我在编码的想法上遇到了问题。任何帮助都是wellcome。

我有一个矩阵,我必须展示趋势。

代码语言:javascript
运行
复制
Limit1=30;
limit2=40;
F=[0 ; 0; 0; 0; 0; 0 ; 1; -79; -84; 35 ; 75; 0 ;0 ]
[row1,col1,v1] = find(abs(F)>30)
[row2,col2,v2] = find(abs(F)>40)

当我跨越Limit1时,我还需要检查Limit2和相反的版本。

有什么想法吗?请

代码语言:javascript
运行
复制
%% OutPut=[ row_of_F,Value_crossing_which_limit(Limit1,Limit2), trend (from lower to upper or vice versa] % values are abs – user31177 1 min ago edit

%%这应该是输出

代码语言:javascript
运行
复制
 OutPut_=[ '8'     '30'    'GoingDown'
'8'     '40'    'GoingDown'
'9'     '40'    'GoingDown'
'10'    '40'    'Comingup' 
'11'    '30'    'GoingDown'
'11'    '40'    'GoingDown'
'12'    '40'    'Comingup' 
'12'    '30'    'Comingup' ]
EN

回答 1

Stack Overflow用户

发布于 2013-01-03 02:06:22

这种方法怎么样?

代码语言:javascript
运行
复制
% your data
F=[0 ; 0; 0; 0; 0; 0 ; 1; -79; -84; 35 ; 75; 0 ;0];

% growth state
growthstate = [0; sign(diff(F))];

% state relative to the lim1
% true if crossing lim1
lim1=30;
lim1state_p =  [false; diff(F-lim1>0)];
lim1state_n =  [false; diff(F+lim1>0)];
lim1state = lim1state_p | lim1state_n

% the same for lim2
% true if crossing lim2
lim2=40;
lim2state_p =  [false; diff(F-lim2>0)];
lim2state_n =  [false; diff(F+lim2>0)];
lim2state = lim2state_p | lim2state_n;

% decod growth state
s{1}='GoingDown';
s{2}='GoingUp';
decode = @(idx) s{double(idx>0) + 1};

c = {};
for k=1:length(F)
  if lim1state(k)
    c(end+1,:) = {F(k-1), F(k), k, lim1, decode(growthstate(k))};
  end
  if lim2state(k)
    c(end+1,:) = {F(k-1), F(k), k, lim2, decode(growthstate(k))};
  end
end

% show
c

我对程序的输出进行了注释。

代码语言:javascript
运行
复制
| F(k-1) | F(k) |  k | level |           | reason                 |
|--------+------+----+-------+-----------+------------------------|
|      1 |  -79 |  8 |    30 | GoingDown | cross -30,F(k)<F(k-1)  |
|      1 |  -79 |  8 |    40 | GoingDown | cross -40,F(k)<F(k-1)  |
|    -79 |  -84 |  9 |     - | -         | no crossing            |
|    -84 |   35 | 10 |    30 | GoingUp   | cross -30, F(k)>F(k-1) |
|    -84 |   35 | 10 |    40 | GoingUp   | cross -40, F(k)>F(k-1) |
|     35 |   75 | 11 |    40 | GoingUp   | cross 40, F(k)>F(k-1)  |
|     75 |    0 | 12 |    30 | GoingDown | cross 30, F(k)<F(k-1)  |
|     75 |    0 | 12 |    40 | GoingDown | cross 40, F(k)<F(k-1)  |
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14124931

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档