Visit Our UNIX and Linux User Community


Bash arrays: rebin/interpolate smaller array to large array


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash arrays: rebin/interpolate smaller array to large array
# 1  
Old 02-13-2016
Bash arrays: rebin/interpolate smaller array to large array

hello,
i need a bit of help on how to do this effectively in bash without a lot of extra looping or massive switch/case

i have a long array of M elements and a short array of N elements, so M > N always. M is not a multiple of N.

for case 1, I want to stretch N to fit M
arrayHuge
Code:
 H = ( [0]....          [M-1] ) has M elements

arraySmall
Code:
 S= ( [0]....          [N-1] )  has N elements

arraySmallRemapped
Code:
S_expanded= ( S[0] ....    S[N-1]%2 .....      S[N-1])  has M elements

i can do this by checking the remainder with switch/case of if/then but am looking for a better way.
this code works
Code:
  for (( i=1; i<${LengthM}+1; i++ ));
  do
    case $(( ($i*$arraySmall/$arrayHuge ) )) in
    0) tmp="$arraySmall[0]";;
    1) tmp="$arraySmall[1]";;
    N-1]) tmp="$arraySmall[N-1]";;
    *)tmp="$tmp";;
   esac
  S_expanded[$i]="$tmp"
 done


Last edited by f77hack; 02-13-2016 at 04:52 PM.. Reason: corrected loop
# 2  
Old 02-13-2016
Not too clear what you expect. How about
Code:
S=(0 1 2 3)
H=(A B C D E F G H I J K)
while [ ${#SX[@]} -lt ${#H[@]} ]; do SX=(${SX[@]} ${S[@]}); done
for ((i=${#H[@]}; i<=${#SX[@]}; i++)); do unset SX[$i]; done
echo ${SX[@]}, ${#SX[@]}, ${!SX[@]}, ${H[@]} 
0 1 2 3 0 1 2 3 0 1 2, 11, 0 1 2 3 4 5 6 7 8 9 10, A B C D E F G H I J K

This User Gave Thanks to RudiC For This Post:
# 3  
Old 02-13-2016
Quote:
Originally Posted by RudiC
Not too clear what you expect. How about
Code:
S=(0 1 2 3)
H=(A B C D E F G H I J K)
while [ ${#SX[@]} -lt ${#H[@]} ]; do SX=(${SX[@]} ${S[@]}); done
for ((i=${#H[@]}; i<=${#SX[@]}; i++)); do unset SX[$i]; done
echo ${SX[@]}, ${#SX[@]}, ${!SX[@]}, ${H[@]} 
0 1 2 3 0 1 2 3 0 1 2, 11, 0 1 2 3 4 5 6 7 8 9 10, A B C D E F G H I J K

Great. Didn't think of wrapping the small array like that. I knew someone would come up with good compact code. Thanks!

This is what I was looking for

Code:
while [ ${#SX[@]} -lt ${#H[@]} ]; do SX=(${SX[@]} ${S[@]}); done


Last edited by f77hack; 02-13-2016 at 05:52 PM.. Reason: added code

Previous Thread | Next Thread
Test Your Knowledge in Computers #636
Difficulty: Easy
Apple reported that as of September 2016, there have been over 190 billion app downloads from their App Store.
True or False?

10 More Discussions You Might Find Interesting

1. Programming

Looping an array of 2d arrays in C

Le sigh... Hopefully this will be the last time I have to ask for help on this topic. For a while now I've been working with a 1d array that holds 2d arrays. For reference you can view here. Now I'm just trying to loop through the elements with the following: #include <stdio.h> void... (3 Replies)
Discussion started by: Azrael
3 Replies

2. Programming

Calling an array of arrays in C.

Corona688 was great in helping me learn how to create arrays that hold other two dimensional array here. Unfortunately I didn't think ask about how to implement or call them. Basically, I'm trying to call an array of two-dimensional arrays like this: declaration: int (*side_one) = { { white_l1,... (6 Replies)
Discussion started by: Azrael
6 Replies

3. Programming

Making an array of 2D arrays in C

I hate I'm asking for help again. Unfortunately it seems there just aren't any links I can find on making an array that holds a bunch of two dimensional arrays. Maybe my google-fu is lacking. Basically I have a header file like this: #define MATRIX 10 int white_l1; int white_l2; int... (2 Replies)
Discussion started by: Azrael
2 Replies

4. Shell Programming and Scripting

Bash Array connectin to another Array

Hello, i have a script that i need account_number to match a name. for exsample : ACCOUNT_ID=(IatHG8DC7mZbdymSoOr11w KbnlG2j-KRQ0-1_Xk356s8) and i run a loop curl requst with this the issue is that i want to know on which account were talking about so bash will know this : ... (4 Replies)
Discussion started by: batchenr
4 Replies

5. Shell Programming and Scripting

Bash 3.2 - Array / Regex - IF 3rd member in array ends in 5 digits then do somthing...

Trying to do some control flow parsing based on the index postion of an array member. Here is the pseudo code I am trying to write in (preferably in pure bash) where possible. I am thinking regex with do the trick, but need a little help. pesudo code if == ENDSINFIVEINTS ]]; then do... (4 Replies)
Discussion started by: briandanielz
4 Replies

6. Shell Programming and Scripting

using arrays and also help with array.contains functionality

here is what i have... i=1 while read line do if grep -i-q "create procedure"<<<$line then startline="$line" endline="blahblah" Get procedure name into a variable named procName procName="procedure name is stored" do some... (2 Replies)
Discussion started by: vivek d r
2 Replies

7. Shell Programming and Scripting

perl - need help with 2 arrays to hash or 2d array?

I have 2 arrays: @array1 outputs the following: 1 1 1 2 @array2 outputs the following A B C D (2 Replies)
Discussion started by: streetfighter2
2 Replies

8. Shell Programming and Scripting

PHP arrays as array elements

PHP question...I posted this on the Web Development forum, but maybe this is a better place! I have an SQL query that's pulled back user IDs as a set of columns. Rather than IDs, I want to use their names. So I have an array of columns $col with values 1,7,3,12 etc and I've got an array $person... (3 Replies)
Discussion started by: JerryHone
3 Replies

9. Shell Programming and Scripting

Searching array of arrays in perl

Suppose there are two arrays of arrays: @A = ( , , , ); @B = ( , , , , ); For each of $A, $A, $A..., I want to find the corresponding one in @B (match the letter, like $A eq $B), and print out both the second item, for example, $A and $B. How can I do this in perl? grep + map? Hope I... (1 Reply)
Discussion started by: zx1106
1 Replies

10. Shell Programming and Scripting

Perl array of arrays

Hi, I am trying to assign an array as a value to one of the array element, I mean I have an array @KS and array @kr. I want array @KS to hold @kr as an element. So I am doin this $KS=@kr; But the value stored is number of elements in the @kr array. Can... (2 Replies)
Discussion started by: eamani_sun
2 Replies

Featured Tech Videos