2012-04-01 39 views
0

正確な用語を使用したかどうかはよくわかりません。私はネット上で答えを見つけようとしました。ここ は私が必要とするものである: 私は(4)の値が4だから、その次に続け湖底する最初の塔頂を読んでいるされない場合、私はmatixMatlabの1次元行列を2次元に変換する

       a = 1 4 7 

            2 5 8 

            3 6 9 

を持っている.... Iドン理由は分かりません。しかし、

私が必要とするのは、2つのインデックスを使用して呼び出すことです。

        a(1,2)= 4 

または私は次のようにそれを呼び出すことができればさらに良い:行と列のように、これは本当にと呼ばれるプロセス(学びたい)とどのようにMathWorks社のMATLABで実行することです何

        a{1}(2)=4 

。 私はループを考えました。 =

18 18 16 18 18 18 16  0  0  0 
16 16 18  0 18 16  0 18 18 16 
18  0 18 18  0 16  0  0  0 18 
18  0 18 18 16  0 16  0 18 18 

>> a(4) 
    ans = 
    18 

>> a(5) 
    ans = 
    18 

>> a(10) 
    ans = 
    18 

私はリシェイプを試してみました: おかげでこのロット

チェックが機能に建てあります。

+0

これは私にとってはベクターに見えません。 –

+0

これは@Oliですか?私は私が正しい条件を使用しているかどうかわからない前に私は言った – pac

+0

それは私に行列のように見えます。 –

答えて

1

すでに行列を持っていれば、あなたはすでに2つのインデックスでアクセスすることができます:あなたは

      a = 1 4 7 

           2 5 8 

           3 6 9 

を持っている場合は、

a(3,2) = 6 

としてそれにアクセスすることができます

ただし、索引付けは左上から行の先頭から列の順に行われます。行列の「4」を取得する場合は、次のようにします。

a(1,2) 
+0

あなたは正しいです@ネイト私はそれが今働いていないことを試みたはいそれは働いています。しかし、それが2つのindecesがa(1)を受け入れる行列であればどうなりますか? – pac

+0

これはMatlabの機能の一つです:)。 1つのインデックスからアクセスすると、列をベクトルに積み上げたかのように値が取得されます。 – Nate

+0

@ Nateのコメントを整理するには、 'A(i、j、k)'インデックスと 'A(i)'インデックスの両方をサポートしている理由がありますので、ループをネストする必要なしにすべての要素をループできます。たとえば、for i = 1:product(size(A))。ほとんどのMATLAB関数は行列入力を受け入れますので、実際にはこれを行う必要はありませんが、あなたは**できます**。 ;) –

1

ベクター/マトリックス/アレイの形状を変更するには、reshape()を使用してください。

0

それとも、1次元配列としてそれを残し、ちょうどインデックスとして

((Column - 1) * 3) + Row - 1)を使用することができます。 3つの列があるため3です。

R1C1、R2C1、R3C1、R1C2などとして

NB(4)ので、あなたが一次元アレイの列と行に配置されてきた方法の4 =、あなたが "ロードされ" ているRは行であるwher上記のマッピングは、上記のコード配列は0から始まり、そうでない場合を前提として

((Row - 1) * 3) + Column - 1) 

は、MATLABをしないでくださいになるようにCをカラムそれは不便だ場合、あなただけの配列行を埋めるものは何でも取得する必要があり、列 ですそれに1を加えてください。

+0

どのように変換するには?私はそれを2次元の慣習を使っている他の関数によって使用されるように呼びたい – pac

+0

上記は変換です。 GetValue(Row、Col)= a [((Col-1)* 3)+ Row - 1) –

+0

???未定義関数または変数 'Col'。 – pac

関連する問題