matlab种筛选三个值中的最大值,在MATLAB中从3个矩阵中获取坐标最大值(Get coordinate-wise maximum out of 3 matrices in MATLAB)...

在MATLAB中从3个矩阵中获取坐标最大值(Get coordinate-wise maximum out of 3 matrices in MATLAB)

假设我有3个矩阵A , B , C 。 我想创建一个包含矩阵最大值的新矩阵。

例如,让

A = [ a11 a12.. ] B = [b11 b12 ..] C = [c11 c12 ..]

[ a21 a22.. ] [b21 b22 ..] [c21 c22 ..]

我希望以这种方式构造新矩阵

NewMatr = [max(a11,b11,c11) max(a12,b12,c12) .. ]

[max(a21,b21,c21) max(a22,b22,c22) .. ]

我想把它们组合成新的矩阵,它将包含3x1向量并将max应用于这个新矩阵,但我不知道如何。 Pf当然总是有方法,但我正在进行优化。

Suppose I have 3 matrices A, B ,C. I want to create new matrix which will contain maximum value of matrices.

For example let

A = [ a11 a12.. ] B = [b11 b12 ..] C = [c11 c12 ..]

[ a21 a22.. ] [b21 b22 ..] [c21 c22 ..]

I want new matrix be constructed this way

NewMatr = [max(a11,b11,c11) max(a12,b12,c12) .. ]

[max(a21,b21,c21) max(a22,b22,c22) .. ]

I thought of combining them into new matrix which will contain 3x1 vectors and applying max to this new matrix but i don't know how. Pf course there is always for method but i'm running for optimisation.

原文:https://stackoverflow.com/questions/22108470

更新时间:2020-02-26 20:57

最满意答案

除连接外,您还可以使用两次输入版本的max ,两次:

max(max(A,B),C)

从关于这种有点不常见的语法的max docs:

C = max(A,B)返回与A和B大小相同的数组,其中最大元素取自A或B A和B的尺寸必须匹配,否则它们可能是标量。

In addition to concatenating, you can use the 2-input version of max, twice:

max(max(A,B),C)

From the max docs regarding this somewhat uncommon syntax:

C = max(A,B) returns an array the same size as A and B with the largest elements taken from A or B. The dimensions of A and B must match, or they may be scalar.

2014-03-01

相关问答

如果你真的想,你可以这样做: X = reshape(diag(diag(A)),[],1)

我不确定你这样做会获得多少收益! If you really want to, you can do: X = reshape(diag(diag(A)),[],1)

I'm not sure you gain much by doing that though!

使用单元阵列。 喜欢这个 c = cell(3,3) %Create cell array of size *3x3*

c =

[] [] []

[] [] []

[] [] []

c{1,1}; = rand(3,3); %Set cell {1,1} to be random matrix of size *3x3*

c{1,2} = ones(4,6) %Set cell {1,2} to be matrix of on

...

如果你想像HANKEL瓦片值那样平铺一组矩阵 ,这是你可以做到的一种方式。 首先,您可以将所有独特的矩阵放在一个单元格数组中: mat = [1 0; 0 0];

cArray = {mat 2.*mat 3.*mat 4.*mat 5.*mat 6.*mat}; %# Your 6 unique matrices

现在,如果您希望前3个矩阵在第一列中运行,最后4个矩阵在最后一行中运行,则可以使用HANKEL创建索引矩阵: >> index = hankel(1:3,3:6);

index

...

您需要使用permute分别将B的前两个维度“移位”到第二维和第三维,然后使用带有@times选项的@times来操作A和B的移位维度版本 - C = bsxfun(@times,A,permute(B,[3 1 2]))

You need to "shift" the first two dimensions of B into second and third dimensions respectively with permute and then use bsxfun with @tim

...

极线以像素为单位定义在图像坐标中。 如果您查看epipolarLine文档中的示例,您将看到线方程以像素为单位定义。 (x,y)对应于(col, row) 。 有关详细信息,请参阅文档 。 因此,如果您知道相应点的行,那将是y值,而不是x 。 看来你有一个bug。 就你所获得的分数位置而言,绝对没有错。 可以这样想:你有一个3D世界点,它恰好投射到图像1中带有整数坐标的2D点上。 没有什么说图像2中的相应2D点也必须具有整数坐标。 实际上,3D点在两个图像中投影到具有整数坐标的2D点的可能性极小。

...

要沿第n个维度求和,您可以使用第二个参数sum如下所示: s = sum(A,n);

因此在你的情况下,要沿着第三个维度求和: s = sum(A,3);

To sum along the n'th dimension, you can use the second argument to sum like this: s = sum(A,n);

thus in your case, to sum along the third dimension: s = sum(A,3);

除连接外,您还可以使用两次输入版本的max ,两次: max(max(A,B),C)

从关于这种有点不常见的语法的max docs: C = max(A,B)返回与A和B大小相同的数组,其中最大元素取自A或B A和B的尺寸必须匹配,否则它们可能是标量。 In addition to concatenating, you can use the 2-input version of max, twice: max(max(A,B),C)

From the max docs regarding t

...

希望以下matlab代码可以帮到你! %by Mark 4/28/2015

clear all;

%%%%%%%%%%%%%%%%% take an example

m=4;

T=10;

y=zeros(1,T);

for i=1:(T)

y(i)=i;

end

%%%%%%%%%%%%%%%%%%%%%% calculate Ymin

count_i=0;

for i=m:1:(T-m)

count_i=count_i+1;

count_j=0;

...

您可以使用数组作为邻接矩阵的行索引,您可以将其存储在临时变量中或直接传递给函数。 tmp = adjacency([1 5 7], :);

dothing(tmp)

% Or

dothing(adjacency([1 5 7], :));

此外,您可以再次使用数组作为索引将这些行分配回相同的行 adjacency([1 5 7], :) = dothing(adjacency([1 5 7], :));

You can use an array as the row index into t

...

是的,这是可能的。 完全按照你所说的去做。 查找具有最小行数的矩阵,并确保您为每个其他矩阵提取该行索引,然后将它们全部拼接在一起: 您有5个单独的矩阵,因此找到每个矩阵的行大小然后找到最小值是很多代码。 我会把所有的矩阵放在一个单元格数组中,然后打电话给cellfun去查找每一行的大小,然后按照我上面所说的去做: %// Build cell array of all matrices

J = {J1, J2, J3, J4, J5};

%// Find rows of all matrices

...

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值