小编Peg*_*gah的帖子

一种计算矩阵乘法的快速算法

在c ++代码eclipse的中间,我需要计算矩阵A和B的乘法,大小为2400*3600(所以尺寸不一样).矩阵存储在浮点二维数组中.它们不稀疏,没有限制.

每次乘法需要很长时间(几分钟),我真的需要减少它,因为我有一个重复5000万次的循环.每次新的A和B应该相乘.欢迎任何类型的建议以减少时间复杂性.(甚至改变存储数据的结构,如果你认为这可能有帮助).例如,如果我将数据存储到一维数组中该怎么办?或者使用向量而不是数组?

在一种特定情况下,第一列始终为1,值为1,-1或0.这个案子有什么想法吗?
在其他情况下,值可以是任何东西.**这些乘法中的一个是X乘以其转置.这个特定的建议有什么建议吗?

c++ arrays matrix multiplying

7
推荐指数
2
解决办法
7146
查看次数

是否为对象数组立即调用构造函数作为类的成员?

class gene{
    int ind;

    gene() {
        ind = 0;
    }
}

class network {
    gene g[10];
}

main() {
    network n;
}
Run Code Online (Sandbox Code Playgroud)

我应该为g数组中的每个对象调用constuctor,还是会自动调用它?

例如,我应该如下更改网络类:

class network {
    gene g[10];

    network() {
        for(int i = 0; i < 10; i++)
            g[i] = gene();
    }
}
Run Code Online (Sandbox Code Playgroud)

c++ constructor class

7
推荐指数
1
解决办法
350
查看次数

在iOS中顺时针绘制圆弧会导致逆时针弧形

我使用以下代码在圆的下半部分绘制弧.

根据Apple的文档:

此方法创建一个打开的子路径.创建的弧位于指定圆的周长.在默认坐标系中绘制时,起始角和结束角基于图1中所示的单位圆.例如,指定0弧度的起始角度,π弧度的结束角度,以及将顺时针参数设置为YES绘制圆圈的下半部分.但是,指定相同的开始和结束角度但将顺时针参数设置为NO会绘制圆的上半部分.

在此输入图像描述 我写

    std::complex<double> start1(   std::polar(190.0,0.0) );


    CGPoint targetStart1 = CGPointMake(start1.real() + 342.0, start1.imag() + 220.);

    CGMutablePathRef path = CGPathCreateMutable();
    CGPathMoveToPoint(path, NULL, targetStart1.x, targetStart1.y);
    CGPathAddArc(path, NULL, 342.0, 220.0, 190, 0.0, PI_180,   YES );
    CGContextAddPath(context, path);
    CGContextSetLineWidth( context, 15.0  );

    // set the color for the stroked circle
    CGContextSetStrokeColorWithColor( context, [UIColor greenColor].CGColor);

    CGContextStrokePath(context);
    CGPathRelease(path);
Run Code Online (Sandbox Code Playgroud)

但是,圆弧在圆圈的上半部分绘制(参见绿色环).我想知道我是否不小心在代码中某处翻转了协调系统,但我不知道我应该搜索什么命令.

在此输入图像描述

谢谢你的帮助.

cgpath ios

7
推荐指数
1
解决办法
2130
查看次数

读取矢量时出现分段错误

在c ++程序中,当我想读取大小为2697806的向量时,我总是得到Segmentation fault错误.我已经尝试了所有可能的阅读方式:

void AUROC(vector<float> v) {
   ...
   for(std::vector<int>::size_type i = 0; i != v.size(); i++)
      if (v[i]>0) ++pos; else ++neg;

   for(std::vector<long>::size_type i = 0; i != v.size(); i++)
     if (v[i]>0) ++pos; else ++neg;

   for (vector<float>::iterator i=v.begin(); i!=v.end(); ++i)
     if (*i>0) ++pos; else ++neg;

   for (long i=0;i<=v.size();i++)
     if (v[i]>0) ++pos; else ++neg;

   for(int i=0;i<=v.size();i++)
     if (v[i]>0) ++pos; else ++neg;
}

...
int main(void) { 
    vector<float> scores;
    // put data in scores;
    AUROC(scores);
}
Run Code Online (Sandbox Code Playgroud)

对于尺寸小得多的矢量,这个问题永远不会发生.

谢谢你的帮助.最好的,Pegah

c++ stl

6
推荐指数
1
解决办法
1255
查看次数

使用java计算最小二乘法

我试图找到一个java代码来计算Ax = b方程中的最小二乘解(x).假设

A = [1 0 0;1 0 0];
b = [1; 2];

x = A\b
Run Code Online (Sandbox Code Playgroud)

返回

x =

    1.5000
         0
         0
Run Code Online (Sandbox Code Playgroud)

我找到了Class LeastSquares,

public LeastSquares(double[] a, double[] b, int degree)
Run Code Online (Sandbox Code Playgroud)

但是在输入中,A和B都是一维数组,但是,在上面的例子中,A是矩阵,B是数组.

在Class NonNegativeLeastSquares中

public NonNegativeLeastSquares(int M, int N, double a[][],double b[])
Run Code Online (Sandbox Code Playgroud)

A是一个矩阵,B是一个数组,但是该类的描述表明它找到了线性方程组Ax = b的近似解,使得|| Ax - b || 2被最小化,并且x > = 0.这意味着x必须始终为正.

我需要一个类似于NonNegativeLeastSquares的类,但是没有x> = 0约束.有人可以帮帮我吗?
非常感谢.

java least-squares

5
推荐指数
1
解决办法
1万
查看次数

如何复制hashset和hashmap,Java是否使用指针?

我有两个问题:
第一:
我有一个返回HashMap的函数.要读取返回的值,我这样写:

    HashMap<Integer,String> hs=my_func2();
Run Code Online (Sandbox Code Playgroud)

如果函数返回HashSet,我也会这样做.

    HashSet<Integer> hs=my_func();
Run Code Online (Sandbox Code Playgroud)

我想知道是否以这种方式将返回的值复制到hs中,或者我应该为它写一个深层副本,或者我应该这样写:HashSet hs = new HashSet(my_func()); HashMap hm = new HashMap(my_func2());

第二个问题:
我通过调用make_matrix_funciton创建一个矩阵.矩阵woule是一个二维数组,包含:
[0 1 1
0 0 0
0 0 0]
然后我将此矩阵赋给sort_vec,并在此函数中矩阵的元素发生变化.我认为java不是基于指针的,所以当我从sort_vec出来时,矩阵应该像以前一样.但是,它已经改变了!它是
[0 0 0
0 0 0
1 1 0]
,显示在sort_vec函数内应用的更改.这是正常的,如果是的话,我应该做些什么来防止它.下面的代码是可编译的.

public static void main(String args[]) {
        int matrix[][]=new int[3][3];
        matrix=make_matrix("011000000");
        int indexes[]={2,1,0};
        int[][] mat=sort_vec(3,matrix,indexes);
    }

    private static int[][] sort_vec(int motifsize,int [][]mat,int[] indexes)
    {
        int[] main_index={0,1,2};

        int l=indexes.length;
        for (Integer i=0;i<l;i++)
            if(indexes[i]!=main_index[i])
            {
                int j=indexes[i];
                int k=main_index[i+1];
                for(;k<l;k++)
                    if(indexes[k]==main_index[i])
                        break;

                indexes[k]=j; …
Run Code Online (Sandbox Code Playgroud)

java arrays pointers copy hashset

2
推荐指数
1
解决办法
4893
查看次数

对java中的变量应用AND操作

我想在a和b(十进制)之间进行"AND"运算.b的值在代码中确定.结果,如果我写得像:

String g= Integer.toHexString(b);
int k=a & g;
Run Code Online (Sandbox Code Playgroud)

我得到错误,因为它应该是这样的:

int k=a & 0xFF;
Run Code Online (Sandbox Code Playgroud)

不知何故0x应该在十六进制值之前,同时它不能是String类型.对于第二个操作数可以是变量的情况,我没有在Internet中找到任何示例.我应该手动编写一个for循环来逐位应用AND操作,还是有一个直接的解决方案呢?我感谢您的帮助.

java variables hex bit-manipulation decimal

1
推荐指数
1
解决办法
89
查看次数

R中的低坐标曲线

这段代码给了我平均值,但我不知道如何得到+ 1sd和-1 sd行.

y<-lowess(x[,1],x[,2],f=0.01)
Run Code Online (Sandbox Code Playgroud)

谢谢你的帮助.

r curve-fitting

1
推荐指数
1
解决办法
2054
查看次数

导入错误:无法导入名称 'timedelta

我收到错误 ImportError: cannot import name 'timedelta'.

从我的代码中的这一行开始:

from datetime import timedelta, datetime
Run Code Online (Sandbox Code Playgroud)

我刚刚安装了熊猫pip install pandas,也使用conda install -f pandas

我写的时候没有任何错误import pandas。当我写which python 我得到/Users/zpu/miniconda3/bin/python 当我想调试第一行是

/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5
Run Code Online (Sandbox Code Playgroud)

python

1
推荐指数
1
解决办法
6415
查看次数

比较两个整数的值

我想比较两个Integer类型数组的值.当我比较它们的确切值时,我得到了错误的答案,当我将它们与Arrays.equals进行比较时得到了正确的答案:

    Integer a[]=new Integer[2];
    Integer b[]=new Integer[2];
    a[0]=138;
    a[1]=0;
    b[0]=138;
    b[1]=0;
    boolean c;
    c=a[0]==b[0];//c is false
    c=Integer.valueOf(a[0])==Integer.valueOf(b[0]);//c is false
    c=Arrays.equals(a, b);//c is true
Run Code Online (Sandbox Code Playgroud)

java arrays comparison integer

0
推荐指数
1
解决办法
3271
查看次数