1

Objective-C (iPhone アプリ用) でいくつかの行列計算を行うことに興味があります。

マトリックスのすべての要素に対してスコアを計算する必要がありますが、マトリックスの初期化を機能させることさえできません。私が実装しようとしているアルゴリズムは、Needleman-Wunsch アルゴリズムと呼ばれ、ヌクレオチド配列の整列に使用されます。

現在、2次元配列を初期化し、配列を定義してから、配列のすべての要素を別の配列で埋めようとしていますが、うまくいかないようです。私の現在の行き方は次のようになります:

-(IBAction)alignSequences:(id)sender {
NSString *dnaString1 = @"GAATTCAGTTA";
NSString *dnaString2 = @"GGATCGA";

int intSections = (dnaString1.length+1);
int intRows = (dnaString2.length+1);


//The matrix is initialized, and the value of every element is set to 0
NSMutableArray *horizontalArray = [[NSMutableArray alloc] initWithCapacity:intSections];

for (int i=0; i <= intSections; i++) {
    [horizontalArray insertObject:[[NSMutableArray alloc] initWithCapacity:intSections] atIndex:i];

    for (int j=0; j <= intRows; j++) {
        [[[horizontalArray objectAtIndex:i] objectAtIndex:j] insertObject:[NSNumber numberWithInt:0] atIndex:j];
    }
}    

NSLog(@"%@",[[horizontalArray objectAtIndex:1] objectAtIndex:1]);
}

これを達成する方法はありますか?(私は Objective-C の初心者なので、愚かな質問やコードに明らかなエラーがある場合は申し訳ありません)

4

1 に答える 1

2

よわざ!しばらく経ちました...ここでは何も起こりません:

NSMutableArray *horizontalArray = [[NSMutableArray alloc] initWithCapacity:intSections];

for (int i=0; i <= intSections; i++) {

    NSMutableArray *innerArray = [[NSMutableArray alloc] initWithCapacity:intRows];

    for (int j=0; j <= intRows; j++) {
        [innerArray addObject:[NSNumber numberWithInt:0]];
    }

    [horizontalArray addObject:innerArray];
    [innerArray release];
}    

これが機能すると仮定すると、これは少しきれいになり、インデックス作成エラーを招くことなく、試みていることを実行するはずです。その点で、必要以上のスペースで内部配列を初期化しているようです。これによりインデックス作成エラーが発生することはありませんが、次の点に注意してください。

[horizontalArray insertObject:[[NSMutableArray alloc] initWithCapacity:intSections] atIndex:i];

次のようにすると良いと思います。

[horizontalArray insertObject:[[NSMutableArray alloc] initWithCapacity:intRows] atIndex:i];
于 2012-05-02T20:15:29.693 に答える