2012-08-01 24 views
0

我生成的矩陣的列數有所不同,我需要對這些列應用一些方程並分別存儲它們的結果(在新矩陣中的不同列將會很好)。對於我的第一個公式,我走的是結構矩陣的部分,並利用這些做了一些分析,例如:矩陣中不同數量的列,分析方程中使用每個單獨列的方法?

A1 = interpolate((817/2+.5):(908/2),:); 
B1 = interpolate((909/2+.5):(1000/2),:); 

averageB = sum(B1)/length(B1); 
averageA = sum(A1)/length(A1); 

tapWithSign = (averageB - averageA)/(averageB + averageA/2) * 100; 

tapA1B1 = abs(tapWithSign); 

我測試我有什麼現在,它拉的特定部分正確地進入一個新的矩陣。當我嘗試將它們應用到等式中時,問題就出現了。它只是給我一個單一的價值時,我應該有13個值(13個值,如果我有13列,我需要評估)

+0

從您的第一個代碼示例看,tapA1B1將會是單一值。你如何將它應用到幾列? – 2012-08-01 21:28:53

+0

對於第二個代碼示例,您希望它做什麼,它是做什麼呢? – 2012-08-01 21:30:41

+0

我只做了第一套。我實際上走到了A11和B11。我知道tapA1B1將會是一個單一的值,我通常在序列的末尾有11個值,但是這隻有1列數據。我現在在一個矩陣中有13列需要貫穿,所以我應該在它的結尾有143個值。 (13行,每行11行) – 2012-08-01 21:34:52

回答

1

你的問題是這一行:

tapWithSign = (averageB - averageA)/(averageB + averageA/2) * 100; 

可以肯定我有這個權利:averageBaverageA是具有維度(1,13)的向量。你想要tapWithSign與這些尺寸相同。

你需要做的是

tapWithSign = (averageB - averageA) ./ (averageB + averageA/2) * 100; 

你需要./而不是/A ./ B意思是「用B的每個元素除A的每個元素,並將結果放入與A和B具有相同大小和形狀的矩陣/矢量。」 A/B是矩陣分區,您可以在您的matlab提示符處輸入doc mrdivide來準確讀取它。

一旦tapWithSign具有正確的尺寸,abs(tapWithSign)也是如此。

+0

我忘記做的唯一的地方是最重要的地方=/lol和這樣一個簡單的解決方案。非常感謝。你對第二個方程有什麼意見嗎? – 2012-08-02 15:20:27

+0

@BenB。你爲什麼不用第一個方程來解決第一個問題,如果你還沒有解決這個問題,那就回來一個更清晰的問題。我很難猜測你在做什麼。 – mwengler 2012-08-02 15:38:26

+0

我只會在需要更明確的新職位上再問第二部分。現在編輯代碼並進行我迄今爲止所做的更改。感謝這個快速的小修復。 – 2012-08-02 16:40:28

相關問題