• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
NSConfused... matrices and NSData
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

NSConfused... matrices and NSData


  • Subject: NSConfused... matrices and NSData
  • From: James Maxwell <email@hidden>
  • Date: Sun, 29 Mar 2009 09:43:44 -0700

Sorry for the long post, but I'm trying to wrap my head around NSData, NSMutableData and matrices.
So I made an example to test my (mis)conception of how this all should work.


Here it is:

- (void) matrixTesting
{
int numRows = 5;
int numCols = 7;
NSMutableData *theMatrix = [NSMutableData dataWithLength:(numRows * numCols * sizeof(float))];
[theMatrix retain];

float *matrix = [theMatrix mutableBytes];

// Set row 3, col 5 to 3.333
matrix[(3 * numRows) + 5] = 3.333;
// Set row 2, col 4 to 6.666
matrix[(2 * numRows) + 4] = 6.666;

int i,j;
for(i=0;i < numRows;i++)
for(j=0;j < numCols;j++)
NSLog(@"Row %i, Col %i = %f", i, j, matrix[i * numRows + j]);

int getRow = 3;

NSRange rowRange = {
getRow * numRows, numCols * sizeof(float)
};

float theRow[numCols];
[theMatrix getBytes:theRow range:rowRange];
for(i=0;i < numCols;i++)
NSLog(@"\n Row test --------> Row 3, index %i = %f", i, theRow[i]);


	[theMatrix release];
}

And here's the output:

2009-03-29 09:26:18.339 [1565:813] Row 0, Col 0 = 0.000000
2009-03-29 09:26:18.340 [1565:813] Row 0, Col 1 = 0.000000
2009-03-29 09:26:18.340 [1565:813] Row 0, Col 2 = 0.000000
2009-03-29 09:26:18.341 [1565:813] Row 0, Col 3 = 0.000000
2009-03-29 09:26:18.341 [1565:813] Row 0, Col 4 = 0.000000
2009-03-29 09:26:18.341 [1565:813] Row 0, Col 5 = 0.000000
2009-03-29 09:26:18.342 [1565:813] Row 0, Col 6 = 0.000000
2009-03-29 09:26:18.342 [1565:813] Row 1, Col 0 = 0.000000
2009-03-29 09:26:18.342 [1565:813] Row 1, Col 1 = 0.000000
2009-03-29 09:26:18.342 [1565:813] Row 1, Col 2 = 0.000000
2009-03-29 09:26:18.343 [1565:813] Row 1, Col 3 = 0.000000
2009-03-29 09:26:18.343 [1565:813] Row 1, Col 4 = 0.000000
2009-03-29 09:26:18.343 [1565:813] Row 1, Col 5 = 0.000000
2009-03-29 09:26:18.344 [1565:813] Row 1, Col 6 = 0.000000
2009-03-29 09:26:18.344 [1565:813] Row 2, Col 0 = 0.000000
2009-03-29 09:26:18.344 [1565:813] Row 2, Col 1 = 0.000000
2009-03-29 09:26:18.345 [1565:813] Row 2, Col 2 = 0.000000
2009-03-29 09:26:18.345 [1565:813] Row 2, Col 3 = 0.000000
2009-03-29 09:26:18.345 [1565:813] Row 2, Col 4 = 6.666000 <---- cool!
2009-03-29 09:26:18.346 [1565:813] Row 2, Col 5 = 0.000000
2009-03-29 09:26:18.346 [1565:813] Row 2, Col 6 = 0.000000
2009-03-29 09:26:18.346 [1565:813] Row 3, Col 0 = 0.000000
2009-03-29 09:26:18.347 [1565:813] Row 3, Col 1 = 0.000000
2009-03-29 09:26:18.347 [1565:813] Row 3, Col 2 = 0.000000
2009-03-29 09:26:18.347 [1565:813] Row 3, Col 3 = 0.000000
2009-03-29 09:26:18.348 [1565:813] Row 3, Col 4 = 0.000000
2009-03-29 09:26:18.348 [1565:813] Row 3, Col 5 = 3.333000 <---- also cool!
2009-03-29 09:26:18.348 [1565:813] Row 3, Col 6 = 0.000000
2009-03-29 09:26:18.348 [1565:813] Row 4, Col 0 = 3.333000 <---- huh???
2009-03-29 09:26:18.349 [1565:813] Row 4, Col 1 = 0.000000
2009-03-29 09:26:18.349 [1565:813] Row 4, Col 2 = 0.000000
2009-03-29 09:26:18.349 [1565:813] Row 4, Col 3 = 0.000000
2009-03-29 09:26:18.350 [1565:813] Row 4, Col 4 = 0.000000
2009-03-29 09:26:18.350 [1565:813] Row 4, Col 5 = 0.000000
2009-03-29 09:26:18.350 [1565:813] Row 4, Col 6 = 0.000000
2009-03-29 09:26:18.351 [1565:813] Row test --------> Row 3, index 0 = 0.000000
2009-03-29 09:26:18.351 [1565:813] Row test --------> Row 3, index 1 = 0.000000
2009-03-29 09:26:18.351 [1565:813] Row test --------> Row 3, index 2 = 0.000000
2009-03-29 09:26:18.352 [1565:813] Row test --------> Row 3, index 3 = 0.000000
2009-03-29 09:26:18.352 [1565:813] Row test --------> Row 3, index 4 = 0.000000
2009-03-29 09:26:18.352 [1565:813] Row test --------> Row 3, index 5 = 0.000000 <--- yikes!
2009-03-29 09:26:18.353 [1565:813] Row test --------> Row 3, index 6 = 0.000000


So why would it set row 4, col 0 to 3.333? And why didn't the range I pulled out for row 3 contain the 3.333?
Obviously I'm not understanding a couple of things here, so any help very much appreciated!



J. _______________________________________________

Cocoa-dev mailing list (email@hidden)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden


  • Follow-Ups:
    • Re: NSConfused... matrices and NSData
      • From: Michael Ash <email@hidden>
    • Re: NSConfused... matrices and NSData
      • From: Ken Thomases <email@hidden>
  • Prev by Date: Re: Memory allocation pattern related question
  • Next by Date: Re: NSConfused... matrices and NSData
  • Previous by thread: Re: Memory allocation pattern related question
  • Next by thread: Re: NSConfused... matrices and NSData
  • Index(es):
    • Date
    • Thread