2013-09-16 54 views
1

這很簡單,但由於某些原因,我無法找到解決方案的任何地方。我有一個向量函數在Matlab:在Matlab中對矢量函數E(s)=(E_1(s),E_2(s),E_3(s))進行索引而不會影響函數

E(s) = [E_1(s),E_2(s),E_3(s)] 

我希望能夠索引,所以通常在Matlab你會使用E(1),爲第一要素。然而,這只是在s等於2處評估向量。 E(s)(1)也給出了一個錯誤。

任何幫助,將不勝感激。這裏有my code供參考。

+0

你的矢量函數不包含在你的代碼中,所以我不確定你想要做什麼。你能提供給你錯誤的代碼嗎? –

+0

剛剛在[Math.SE]回答了(http://math.stackexchange.com/questions/495519/indexing-a-vector-function-es-e-1s-e-2s-e-3s-in-matlab -without-eva),然後發現你在這裏張貼了。爲了這個受衆的利益,我會重複我的回答,但應避免重複發帖。你甚至可以考慮取消Math.SE,因爲這不是真正的數學問題。 – horchler

+0

@horchler:你可能是對的,我認爲這是可以接受的,因爲MATLAB標籤的存在,但它更有意義。 – Freeman

回答

3

你有一個返回一個向量的符號函數。輸入whos,你會看到E的等級是symfun。不幸的是,我認爲你不能直接編入一個符號函數。但是,你可以將其轉換成表情符號(類sym)只需將其設置爲一個新的變量,並通過在你的符號變量s

Es = E(s); 

現在,你應該能夠評估Es(1)Es(2)Es(3)如你所想。

+0

非常感謝。所以這需要1x1 symfun - > 3x1 sym。我現在可以提取您指出的元素,但是如何恢復Es(1)對象的功能? – Freeman

+1

我不確定你的意思?你問你如何插入's'和其他符號變量的值?如果是這樣,你可以使用['subs'](http://www.mathworks.com/help/symbolic/subs.html)。或者你可以將'Es'矢量的每個元素都變成一個符號函數,例如'Es2(s)= symfun(Es(2),s)'。然後你可以通過'Es2(3)'來評估's'的第二個元素等於3.玩耍,許多選擇都是可能的,你可能會弄清楚如何重新向量化它,如果這是你想要的。 – horchler

+0

謝謝你:D對它進行了排序,感謝您的幫助。 – Freeman

0

如果我正確理解你,你唯一的希望就是使用命令「eval」。輸入「help eval」並查看這是否是您需要的。

+0

感謝您的回答。我試了一下,可悲的是沒有運氣,它的一個<1x1 symfun>對象,來自'eig'函數的輸出,它創建了一個<3x1 sym>數組。 <1x1 symfun>對象是相同的,除了某些原因我可以訪問它的元素! – Freeman