MATLABでベクトルによる行列合成内で最大のベクトルを見つけようとしていますが、いくつかの困難があるので、誰かが私を助けてくれればとてもありがたいです. 私はこれを持っています:
マトリックス パス (ダイクストラ関数の解)。これは 1000x1000 のマトリックスで、その値は 1 行のベクトルで、列数が異なります (列が 10 より大きい場合、値は「1x11 double、1x12 double などのように表示されます」 」)。マトリックス パスの形式は次のとおりです。
1 2 3 ....
1 1 <1x20 double> <1x16 double>
2 <1x20 double> 2 [2,870,183,492,641,863,611,3]
3 <1x16 double> [3,611,863,641,492,183,870,2] 3
4 <1x25 double> <1x12 double> <1x14 double>
.
.
.
最初は、行列で最大のベクトルを見つけるだけで考えました
B = max(length(paths))
ただし、MATLAB は B = 1000 を返します。この値は実現可能ですが、可能性は低いです。以下を使用してベクトルの位置を見つけようとする場合:
[row,column] = find(length(paths) == B)
MATLABはrow = 1、column = 1を返しますが、これは確かに間違っています...おそらくMATLABがデータを取得する方法の問題だと思いました。次のように入力すると、行列のエントリがベクトルと見なされないようです。
length(paths(3,2))
それは私に1を返しますが、私が理解しているように、導入時にも8を返す必要があります:
paths(3,2)
戻ります [1x8 double]
が、ベクトル全体が表示されることを期待しています。何をすればよいかわかりません。おそらく「for」ループです。MATLAB が行列のデータをベクトルとして受け取るか、単純な double 値として受け取るかは本当にわかりません。