不同形状特征矩阵的正则乘法

时间:2017-12-14 18:01:06

标签: c++ eigen

我有一个Nx3特征矩阵。 我有一个Nx1 Egein marix。 我试图通过Nx1中相应的标度来获得Nx3中每行的系数乘法,这样我就可以缩放一堆3d矢量。

我确定我忽视了一些显而易见的事情,但我无法让它发挥作用。

2,4,6
8,10,12,
14,16,18,
20,22,24

我希望矩阵像Nx3一样:

using System;
using System.Net;
using System.Net.Http;
using Google.Apis.Services;
using Google.Apis.Urlshortener.v1;
using Google.Apis.Urlshortener.v1.Data;
using Google.Apis.Http;

namespace ConsoleTestBed
{
    class Program
    {
        private const string ApiKey = "YourAPIKey";

        static void Main(string[] args)
        {
            var initializer = new BaseClientService.Initializer
            {
                ApiKey = ApiKey,
                //HttpClientFactory = new ProxySupportedHttpClientFactory()
            };
            var service = new UrlshortenerService(initializer);
            var longUrl = "http://wwww.google.com/";
            var response = service.Url.Insert(new Url { LongUrl = longUrl }).Execute();

            Console.WriteLine($"Short URL: {response.Id}");
            Console.ReadKey();
        }
    }
}

2 个答案:

答案 0 :(得分:2)

您可以使用广播:

m = m.colwise().cwiseProduct(dots);

或观察到你想要做的就是应用非均匀缩放:

m = dots.asDiagonal() * m;

两个表达式都会生成类似的代码。

答案 1 :(得分:0)

好的,所以我得到了一些工作。我可能做错了什么但这对我有用,所以我想我会分享。我一周前写了我的第一行c ++,所以我认为我应该得到一些恩惠。鼓励任何有更好解决方案的人发帖。

// scalar/coefficient multiplication (not matrix) on Nx3 x N. For multiplying dot products by vectors
void N3xNcoefIP(MatrixXf &A, MatrixXf &B) {
    A.array() *= B.replicate(1, A.size()).array();
}