Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Mute
- Printer Friendly Page

Highlighted
##

Are there any plans to create a 'ippsSVDSort_32f_D2'?

(There is the existing 'ippsSVDSort_64f_D2' method but when we need this operaion on 32 bit floating point data, we must convert first, call the 64 bit method, then convert back.)

astrasel

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-02-2010
08:41 AM

35 Views

ippsSVDSort_32f_D2

(There is the existing 'ippsSVDSort_64f_D2' method but when we need this operaion on 32 bit floating point data, we must convert first, call the 64 bit method, then convert back.)

7 Replies

Highlighted
##

PaulF_IntelCorp

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-02-2010
11:04 AM

35 Views

'ippSVDSort' is part of the speech recognition domain. The speech recognition domain has been removed from the 7.0 product and will only continue to be supported in the 6.1 product.

Highlighted
##

Are you saying that SVD won't be available in 7.0 at all, or that we would have to get the 'speech recognition' package to be able to continue to use it?

astrasel

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-02-2010
11:23 AM

35 Views

Highlighted
##

All the functions that are part of the "ippsr.h" will not be included. These are the functions that comprise the speech recognition domain.

Are you using just this one function from that domain? We are still in a beta phase on 7.0 and are looking for feedback regarding the changes that have been made. If you could provide a list of the functions you are using we can provide alternatives or consider retaining some key functions.

If you do not wish to share the list publicly then be sure to push the "yes" button next to the "Mark this post private?" item at the bottom of the thread reply editing box, before you push submit.

PaulF_IntelCorp

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-02-2010
01:57 PM

35 Views

Are you using just this one function from that domain? We are still in a beta phase on 7.0 and are looking for feedback regarding the changes that have been made. If you could provide a list of the functions you are using we can provide alternatives or consider retaining some key functions.

If you do not wish to share the list publicly then be sure to push the "yes" button next to the "Mark this post private?" item at the bottom of the thread reply editing box, before you push submit.

Highlighted
##

Actually, I'm having some basic trouble using this method. In particular, verifying the results by producing an A (using the formulaA= U W VT) that matches the input.

For example, I have a 10x6 input matrix, so my output U will be 10x6 (according to the documentation - while in Matlab it is 10x10, and I think this is source of my confusion and/or error in IPP), W is a vector with 6 elements and V is 6x6 (so VT will be 6x6).

It's not complete clear the size of W in the above equation (A = U W VT) but I'm not sure you can multiply a [10x6] * 'W' * [6x6] and get a 10x6 result.

Is there an example showing that the original input can be produced by the SVD result?

astrasel

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-02-2010
03:03 PM

35 Views

For example, I have a 10x6 input matrix, so my output U will be 10x6 (according to the documentation - while in Matlab it is 10x10, and I think this is source of my confusion and/or error in IPP), W is a vector with 6 elements and V is 6x6 (so VT will be 6x6).

It's not complete clear the size of W in the above equation (A = U W VT) but I'm not sure you can multiply a [10x6] * 'W' * [6x6] and get a 10x6 result.

Is there an example showing that the original input can be produced by the SVD result?

Highlighted
##

One thing that is confusing me is the term "column-orthogonal matrix." I suspect that "column-orthogonal" means the columns of the matrix U all satisfy the conditions of an orthogonal matrix, but the rows do not, and this might then allow for U to be a non-square matrix?

V must be a square matrix. My interpretation is that W is being represented in short-hand notation as a vector, but that it represents a diagonal matrix, which means it must also be square(all the non-diagonal members are zero). This would imply then that U must also be a square matrix of the same size as V, otherwise, as you noted, the matrix arithmetic won't work.

Will make a request to engineering for clarification.

PaulF_IntelCorp

Employee

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-02-2010
04:24 PM

35 Views

I'm not aware of any sample for this function, and I'm not expert at this function. According to the documentation:

This function performs Single Value Decomposition (SVD) on the input matrix A. The output matrices U, W, and V meet the following condition:

A = U W V^{T},

where the matrix U is column-orthogonal, the matrix W is diagonal (stored as a vector), and the matrix V is orthogonal. V^{T}is the transpose of the matrix V.

The function ippsSVDSort transforms output matrices so that elements of the matrix W are sorted in descending order of their absolute values.

One thing that is confusing me is the term "column-orthogonal matrix." I suspect that "column-orthogonal" means the columns of the matrix U all satisfy the conditions of an orthogonal matrix, but the rows do not, and this might then allow for U to be a non-square matrix?

V must be a square matrix. My interpretation is that W is being represented in short-hand notation as a vector, but that it represents a diagonal matrix, which means it must also be square(all the non-diagonal members are zero). This would imply then that U must also be a square matrix of the same size as V, otherwise, as you noted, the matrix arithmetic won't work.

Will make a request to engineering for clarification.

Highlighted
##

Mathematically, form-by-n matrix A (i.e.m rows, n columns) with requirement forV to ben-by-n square matrix, matrix U must be m-by-m and Wmust be m-by-n (!non-square) matrix.

W isdiagonal, somay berepresented byavector, additionally, in IPPmatrix U is cut tom-by-**n**matrix, so as other columns(with index higher than n) just make no difference, and there is a little or no reason to output them. That is why IPP can do in-place SVD, i.e. replacinginput A with output U.

Vyacheslav

IPP

Vyacheslav_Baranniko

New Contributor II

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-05-2010
03:08 AM

35 Views

W isdiagonal, somay berepresented byavector, additionally, in IPPmatrix U is cut tom-by-

Vyacheslav

IPP

Highlighted
##

I think I understand what you are saying, and will try to use the U,W and V produced by SVD to re-create A (the input). It sounds like when I multiply Uby W, I should say that U is really an m-by-m matrix (when the output from SVD is described as being m-by-n).

I think you can see why we are having this discussion however. This interpretation of U is not clear from the current documentation. It would still be nice to have some example (C) code to make things clearer.

astrasel

Beginner

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Email to a Friend
- Report Inappropriate Content

07-05-2010
08:27 AM

35 Views

I think you can see why we are having this discussion however. This interpretation of U is not clear from the current documentation. It would still be nice to have some example (C) code to make things clearer.

For more complete information about compiler optimizations, see our Optimization Notice.