我有一个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();
}
}
}
答案 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();
}