全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 MATLAB等数学软件专版
1323 3
2010-09-19
下面这个程序是为了将SAS中得到的pearson correlation系数表中大于某个阈值的数的索引进行定位:
clear;
clc;
A=xlsread('d:\pearsoncor.xls','sheet1');
alpha=0.6;  %阈值为alpha
[row,column]=size(A);
% m=19;   %m是pearson相关系数表的项的个数
k=1;
% cor_index=zeros(m,2);

for i=1:row
    for j=1:column
        if i==j | i>j
            ;
        else if abs(A(i,j))>alpha
            cor_index(k,1)=i;
            cor_index(k,2)=j;
        end
        end
    k=k+1;
    end
end
cor_index
我想得到的结果应该是:
xx yy
xx yy
xx yy
这样形式的。但是
最后虽然可以得到所要的值,但是没对值中间会有很多的多余的0
0 0
0 0
0 0
......
xx yy
0 0
0 0
......
xx yy
0 0
类似这样的结果
虽然可以直接输出i,j,但是看起来不舒服,还是想把找到的i,j放到一个二维数组里。
请问该如何修改程序?
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-9-19 00:58:21
why don't you use
[r c v] = find(abs(A)>alpha);
corr_index = [r c];

if you have to use loopy loops, to delete zero, you can do
corr_index(any(corr_index ==0,2),:) = [];
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-19 01:02:05
A(all(A==0,2),:)=[]

可以把一行全是零的行删除。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-9-19 11:59:18
谢谢楼上2位的指点
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群