[Scilab-users] circshift() : Scilab Enhancement Proposal
Rafael Guerra
jrafaelbguerra at hotmail.com
Wed Jan 10 00:01:55 CET 2018
Hi Samuel,
The functionality is very nice but the syntax proposed is maybe a bit complicated?
It would be easier to combine ‘newSizes’ with a new ‘shift’ argument (but with no wrapping as proposed in circshift).
For example:
m =
2. 5. 9. 3.
2. 4. 5. 5.
4. 1. 8. 5.
resize_matrix(m, newSizes=[5 7], shift=[1 2])
ans =
0. 0. 0. 0. 0. 0. 0.
0. 0. 2. 5. 9. 3. 0.
0. 0. 2. 4. 5. 5. 0.
0. 0. 4. 1. 8. 5. 0.
0. 0. 0. 0. 0. 0. 0.
resize_matrix(m, newSizes=[-1 -1], shift=[-1 -2])
ans =
5. 5. 0. 0.
8. 5. 0. 0.
0. 0. 0. 0.
Regarding extending circshift() to non-integers I had in mind n-dimensional matrices and the discrete Fourier transform.
These matrices could represent regularly sampled 1D time signals, or 2D/3D spatial functions, etc.
In this context the shift theorem gives a specific meaning to the circular shifts of the input signals (corresponding to linear phase shifts in their spectrum).
Regards,
Rafael
From: users [mailto:users-bounces at lists.scilab.org] On Behalf Of Samuel Gougeon
Sent: Tuesday, January 09, 2018 8:26 PM
To: Users mailing list for Scilab <users at lists.scilab.org>
Subject: Re: [Scilab-users] circshift() : Scilab Enhancement Proposal
Hello Rafael,
To go on about resize_matrix() , padding, and shifting without wrapping:
Specifying a (N>1 x 2) matrix of positive (pad) or negative (trim) margins resizing
would be simple.
Padding with other default elements for non-numerical arrays, or with a chosen
value, is already enabled.
Possible new syntaxes and examples of usages:
resMat = resize_matrix(mat, frameWidth)
resMat = resize_matrix(mat, frameWidth, ..)
m = [
6 -7 -1 -2
-6 0 -2 -5
-5 4 -1 8
];
// shift without extension nor wrapping:
resize_matrix(m, [0 0 ; -1 1])
ans =
-7 -1 -2 0
0 -2 -5 0
4 -1 8 0
// Another case without extensions nor wrapping:
resize_matrix(m, [1 -1 ; 2 -2])
ans =
0 0 0 0
0 0 6 -7
0 0 -6 0
// More general
resize_matrix(m, [2 1 ; 1 -1])
ans =
0 0 0 0
0 0 0 0
0 6 -7 -1
0 -6 0 -2
0 -5 4 -1
0 0 0 0
Is it the kind of features you were thinking about?
IMO, there is no need to implement this in another specific function, because these features are just particular cases or resizing, with a simple syntax allowing to crop borders as well.
Best regards
Samuel
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.scilab.org/pipermail/users/attachments/20180109/7f89f7e7/attachment.htm>
More information about the users
mailing list