将矩阵的元素复制到矢量MATLAB

时间:2017-01-09 00:55:11

标签: matlab matrix vector mapping

假设我们有一个矩阵A(2x5),第一行包含数字:

1 2 3 5 7

和第二行:

0.4 0.1 0.2 0.1 0.2

此外,存在数字1,2,3 ... 10的10维向量B. 如何创建一个新的10维向量C,当A(1,:) == B,其他为0时,只包含A(第二行)的值。

所以新的向量C应该具有以下形式:

0.4 0.1 0.2 0 0.1 0 0.2 0 0 0 

(对于不在A中的B的单元格,加零)。

我试过这个解决方案,但由于A和B之间的尺寸不同,我遇到了问题。

for i=1:53
    if B(i) == A(1,i)
        C{1,i} = A(2,i);
    else
        C{1,i}=0;
    end
end 

指数超出矩阵维度。

3 个答案:

答案 0 :(得分:2)

您不熟悉之后会发生什么,但这至少可以提供所需的输出:

A

[我假设您的意思是10 元素向量,而不是10 ...]

如果您只想将B的第一行用作索引而将第二行用作指定值,那么您根本不需要使用A = [1 2 3 5 7; 0.4 0.1 0.2 0.1 0.2]; C = zeros(1,10); C(A(1,:)) = A(2,:) 并且您可以执行某些操作像这样:

for loop

答案 1 :(得分:2)

如何删除ismember并使用A = [1 2 3 5 7; 0.4 0.1 0.2 0.1 0.2]; B = 1:10; C = zeros(1,10); C(B(ismember(B, A(1,:)))) = A(2,ismember(A(1,:),B)); 函数进行内联:

A(1,:)

提示:即使我们碰巧BonClick没有$(document).on('keypress', function(e) { console.log(e.target); var tag = e.target.tagName.toLowerCase(); if (tag == 'input' || tag == 'textarea') { if (event.keyCode != 13) { if ($(this).val().length >= 1) { $(this).parent().addClass('active'); } else { if ($(this).val().length == 0) { $(this).parent().removeClass('active'); } } } } });没有的值,此解决方案仍然有效。

答案 2 :(得分:0)

使用ismemberfor循环:

clc; clear;

A=[
    1 2 3 5 7;
    0.4 0.1 0.2 0.1 0.2
  ];

B = 1:10;

C = zeros(1,10);
for j = 1:10
    if ismember(j, A(1,:))
            C(j) = A(2, A(1,:) == j);
    else
        C(j) = 0;
    end
end
C