2013-04-23 62 views
0

这感觉应该很简单。MATLAB中2个向量的2列矩阵

我正在构建一个最小距离分类器,我想把feature1和feature2放到同一个矩阵中,以便我可以调用它们并获得像这样的答案。

featureVector(1,:) =所有feature1

featureVector(2,:) =所有feature2

我通过循环并希望把这些值到featureVector作为循环运行。

我对MATLAB很神奇,所以我不知道如何把它写成文字。希望这样做有足够的道理。

谢谢大家。

回答

1

如果您feature1是一个水平矢量,然后执行:

featureVector = [ feature1 ; feature2 ] 

品(如垂直),这样做:

featureVector = [ feature1 , feature2 ] 

如果你不知道它的方向做,你总是可以做一个reshape

feature1 = reshape(feature1, 1, numel(feature1)) 

...什么会让feature1水平,邻R:

feature1 = reshape(feature1, numel(feature1), 1) 

...什么会让feature1垂直。

reshape使用等,这将使从水平/垂直矢量任何向量/矩阵,以特定值一个接一个从原始源。

编辑:一个证明,它的工作原理:

>> a = [1 ; 2 ; 3 ; 4 ; 5]; 
>> b = [6 ; 7 ; 8 ; 9 ; 10]; 
>> ab = [a, b] 

ab = 

    1  6 
    2  7 
    3  8 
    4  9 
    5 10 

>> ab(2,:) 

ans = 

    2  7 

编辑:如果您feature1feature2是标量,并希望将其添加到featureVector一个接一个在每次迭代,然后执行:

featureVector = [] 

for i = 1:... 
    feature1 = ...; 
    feature2 = ...; 
    featureVector = [featureVector; [feature1, feature2]]; 
end 
+0

这是我第一次尝试。当我在那里做第一个选项时,它只保留feature1和feature2的最后2个值。我需要它来保持他们的一切。它在循环后输出2x1矩阵,它应该是5x1。 – zburns12 2013-04-23 18:58:07

+0

让我看看你的代码。我刚刚添加了一个证明它的工作原理。 – 2013-04-23 18:58:46

+0

ratio = h1_max/h2_max; formant3 = formfreq(1); formant4 = formfreq(2); formDistance = formant4 - formant3; featureVector1 = [ratio,formDistance]; – zburns12 2013-04-23 19:01:59

0

你有没有想过用这个?

results = [values1,values2];