From: kk KKsingh on
I have some Signals about 500 samples acquired in 750 seconds..

so Row denotes time = 1:1:750, coulmns are 500

Now I need to remove time and columns having value of 45.....there are some..so need to remove indexes of both time and signal......

After that i need to run a algorithm say

[x,y]=dft(time,signal)

I am not sure how to get the decimated matrix out !

Thanks and Regards
From: dpb on
kk KKsingh wrote:
> I have some Signals about 500 samples acquired in 750 seconds..
>
> so Row denotes time = 1:1:750, coulmns are 500
>
> Now I need to remove time and columns having value of 45.....there are
> some..so need to remove indexes of both time and signal......
>
> After that i need to run a algorithm say
> [x,y]=dft(time,signal)
>
> I am not sure how to get the decimated matrix out !
....

What's the specific nature of the data w/ the value to be removed?

All observations for which any value of the 500 columns are 45? Is
there actually a time == 45 that is to be removed (I'm guessing not, but
it's not perfectly clear)?

If it's the first, if the data is in array x of size(x)=[750,500] then

[r45,c45]=find(x~=45); % rows, columns _not_ containing "45"
x_decimated = x(unique(r45),:); % the unduplicated above rows

--
From: dpb on
dpb wrote:
....

> If it's the first, if the data is in array x of size(x)=[750,500] then
>
> [r45,c45]=find(x~=45); % rows, columns _not_ containing "45"

....

DOH! :( That fails 'cuz it returns row for any column that isn't even
if there's another column that does meet the criterion. Sorry...

Go at it in forward manner...

[r45,c45]=find(x==45); % rows, columns containing "45"
x(unique(r45),:) = []; % eliminate the rows found

--
From: kk KKsingh on
dpb <none(a)non.net> wrote in message <i3hs08$3rf$1(a)news.eternal-september.org>...
> dpb wrote:
> ...
>
> > If it's the first, if the data is in array x of size(x)=[750,500] then
> >
> > [r45,c45]=find(x~=45); % rows, columns _not_ containing "45"
>
> ...
>
> DOH! :( That fails 'cuz it returns row for any column that isn't even
> if there's another column that does meet the criterion. Sorry...
>
> Go at it in forward manner...
>
> [r45,c45]=find(x==45); % rows, columns containing "45"
> x(unique(r45),:) = []; % eliminate the rows found
>
> --

Hi, Thanks for the reply

Problem is my matrix is 750 by 315 each column represent clipped audio signal having 750 points on in each signal....max clipped value is 45 minimum is -45....My algorithm works well on single column when i do

index=find(s==45)
s(index)=[];
t(index)=[];
index1=find(s==-45)
s(index1)=[];
t(index1)=[];

x=dft(s,t)

Now I want to do same thing for the whole 315 coulmn, column by column .....and x which is a 750 points out put...should be saved as column wise...This problem is about reconstructing missing points....

Should i run loop ??????

Thanks for your reply
From: dpb on
kk KKsingh wrote:
> dpb <none(a)non.net> wrote in message
> <i3hs08$3rf$1(a)news.eternal-september.org>...
....
>> [r45,c45]=find(x==45); % rows, columns containing "45"
>> x(unique(r45),:) = []; % eliminate the rows found
....
> ...My algorithm works well on single column when i do
....
> Now I want to do same thing for the whole 315 coulmn, column by column
> .....and x which is a 750 points out put...should be saved as column
> wise...This problem is about reconstructing missing points....
....

That's where the problem description wasn't clear -- if you want a
different set of time values for each column, then yes, you'll need to
treat them individually.

Looping would be one way, certainly, and perhaps as good as any since
one presumes the rejected points won't be consonant across channels so
there's not much sense in trying to keep an array (unless you make a
cell array to hold a given length vector per entry).

--