Como trabajar con fila de matriz [SOLUCIONADO]

Hola a todos, tengo una matriz de 6 filas y 23 columnas:

byte RC [6][23]={{1150,500,1150,500,350,1350,1150,500,1150,500,350,1350,300,1350,350,1300,350,1350,300,1350,350,1300,1200},
{1200,500,1150,500,350,1300,1200,500,1150,500,350,1300,350,1350,1150,500,350,1300,350,1350,300,1350,350},
{1200,500,1150,500,350,1300,1200,500,1200,450,350,1300,1200,500,350,1300,350,1300,400,1300,350,1300,350},
{1200,450,1200,450,400,1300,1200,450,1200,450,400,1300,350,1300,350,1350,1150,500,350,1300,350,1350,350},
{1150,550,1100,550,300,1350,1150,550,1100,550,300,1350,300,1400,300,1350,300,1350,300,1400,1100,550,300},
{1150,500,1200,500,300,1350,1150,500,1200,500,300,1350,350,1350,300,1350,350,1300,1200,500,300,1350,350}};

Cada fila completa equivale a lo que manda un mando a distancia de un ventilador, si por ejemplo pulso el botón 1 se manda la fila 1 con el siguiente comando:

irsend.sendRaw(FILA1,Len,frec);

(Len y frec son dos números conocidos, no he considerado relevante dar más info al querer sólo manejarme con arrays).
Mi duda es ¿cómo selecciono la fila completa? en Matlab por ejemplo sería

irsend.sendRaw(RC[flag][:],Len,frec);

con flag=número de fila.
No sé si soy suficientemente claro. Muchas gracias como siempre. Un saludo.

irsend.sendRaw(RC[0][], 23, 38);    // supongo que se envian así.

prueba a ver si esto funciona, no estoy seguro.
Tal vez haya que copiarlo a un vector temporal de una sola dimensión.

No, al hacer eso me lanza un error, he probado con un vector temporal pero me dice que tiene que ser unsigned y al mandarlo unsigned no lo lee bien... un lío. Le daré alguna vuelta a ver que se me ocurre.
Muchas gracias de nuevo surbyte.

EDIT
Arreglado, el vector estaba guardado como byte, al guardarlo como int funciona todo a la perfección.
Me gustaría poder mandar el vector como quería al principio, sin vector temporal, es un capricho... pero oye, ya tengo un mando a distancia totalmente funcional.
Muchas gracias en cualquier caso.

EDIT 2
Adjunto el código completo por si a alguien le sirve, en una pantalla puedes ver la opción entre las 6 del mando, sealternan con un botón (On/Off, + intensidad, - intensidad, calefactor, girar On/Off, temporizador) una vez seleccionada la opción se manda el código pertinente al pulsar el segundo botón:

#include <Wire.h>

#include <FastIO.h>
#include <I2CIO.h>
#include <LCD.h>
#include <LiquidCrystal.h>
#include <LiquidCrystal_I2C.h>
#include <LiquidCrystal_SR.h>
#include <LiquidCrystal_SR2W.h>
#include <LiquidCrystal_SR3W.h>

#include <IRremote.h>
#include <IRremoteInt.h>

LiquidCrystal_I2C lcd(0x27, 2, 1, 0, 4, 5, 6, 7, 3, POSITIVE);  // Función de configuración

IRsend irsend;
int flag=0; //0-5, 6 estados
char* inst[]={"On", "+", "-", "Giro", "Timer", "Heat" }; //Estados
int boton1=12; //Botón cambiar estado
int boton2=13; //Botón ejecutar acción
int Len=23;
int RC [6][23]={{1150,500,1150,500,350,1350,1150,500,1150,500,350,1350,300,1350,350,1300,350,1350,300,1350,350,1300,1200},
{1200,500,1150,500,350,1300,1200,500,1150,500,350,1300,350,1350,1150,500,350,1300,350,1350,300,1350,350},
{1200,500,1150,500,350,1300,1200,500,1200,450,350,1300,1200,500,350,1300,350,1300,400,1300,350,1300,350},
{1200,450,1200,450,400,1300,1200,450,1200,450,400,1300,350,1300,350,1350,1150,500,350,1300,350,1350,350},
{1150,550,1100,550,300,1350,1150,550,1100,550,300,1350,300,1400,300,1350,300,1350,300,1400,1100,550,300},
{1150,500,1200,500,300,1350,1150,500,1200,500,300,1350,350,1350,300,1350,350,1300,1200,500,300,1350,350}};
bool estado1=HIGH;
bool estado2=HIGH;
bool estado1ant=HIGH;
bool estado2ant=HIGH;

void setup() {
  // put your setup code here, to run once:
Serial.begin(9600);
pinMode(boton1,INPUT);
pinMode(boton2,INPUT);
lcd.begin(16,2);
lcd.clear();
}

void loop() {
  // put your main code here, to run repeatedly:
  lcd.setCursor(0,0);
  lcd.print(inst[flag]);
  lcd.setCursor(0,1);
  lcd.print(flag+1);
  lcd.print("/6");
  estado1=digitalRead(boton1); //Botón 1 presionado
  if (estado1ant==HIGH && estado1==LOW) {
   flag=flag+1;
   lcd.clear();
   if (flag==6) {
     flag=0;
     }
     delay(250);
     estado1=estado1ant;
   } 
   estado2=digitalRead(boton2);
   if (estado2ant==HIGH && estado2==LOW) { 
     unsigned int array[23]={};
     for (int i=0; i<Len; i++){
       array[i]=RC[flag][i];
     }
     irsend.sendRaw(array,Len,38);
     estado2=estado2ant;
     delay(250);
   }
}

Y porque te complicas la vida y no definies mejor cada vector como un array de 23 elementos pero de 1 demensión.
Nota: no puedes definir byte RC[23] y luego asignar valores por encima de 255.
Byte va entre 0 y 255.
Int va entre -32767, 0 y 32768

int RC0[23]= {1150,500,1150,500,350,1350,1150,500,1150,500,350,1350,300,1350,350,1300,350,1350,300,1350,350,1300,1200};
int RC1[23]= {1200,500,1150,500,350,1300,1200,500,1150,500,350,1300,350,1350,1150,500,350,1300,350,1350,300,1350,350};
int RC2[23]={1200,500,1150,500,350,1300,1200,500,1200,450,350,1300,1200,500,350,1300,350,1300,400,1300,350,1300,350};
int RC3[23]={1200,450,1200,450,400,1300,1200,450,1200,450,400,1300,350,1300,350,1350,1150,500,350,1300,350,1350,350};
int RC4[23]={1150,550,1100,550,300,1350,1150,550,1100,550,300,1350,300,1400,300,1350,300,1350,300,1400,1100,550,300};
int RC5[23]={1150,500,1200,500,300,1350,1150,500,1200,500,300,1350,350,1350,300,1350,350,1300,1200,500,300,1350,350};

y luego podras usar sin problemas

irsend.sendRaw(RC1, 23, 38);

También debería funcionar el envío directo del array correspondiente:

irsend.sendRaw(RC[flag],Len,38)

surbyte:
Y porque te complicas la vida y no definies mejor cada vector como un array de 23 elementos pero de 1 demensión.
Nota: no puedes definir byte RC[23] y luego asignar valores por encima de 255.
Byte va entre 0 y 255.
Int va entre -32767, 0 y 32768

int RC0[23]= {1150,500,1150,500,350,1350,1150,500,1150,500,350,1350,300,1350,350,1300,350,1350,300,1350,350,1300,1200};

int RC1[23]= {1200,500,1150,500,350,1300,1200,500,1150,500,350,1300,350,1350,1150,500,350,1300,350,1350,300,1350,350};
int RC2[23]={1200,500,1150,500,350,1300,1200,500,1200,450,350,1300,1200,500,350,1300,350,1300,400,1300,350,1300,350};
int RC3[23]={1200,450,1200,450,400,1300,1200,450,1200,450,400,1300,350,1300,350,1350,1150,500,350,1300,350,1350,350};
int RC4[23]={1150,550,1100,550,300,1350,1150,550,1100,550,300,1350,300,1400,300,1350,300,1350,300,1400,1100,550,300};
int RC5[23]={1150,500,1200,500,300,1350,1150,500,1200,500,300,1350,350,1350,300,1350,350,1300,1200,500,300,1350,350};




y luego podras usar sin problemas



irsend.sendRaw(RC1, 23, 38);

No hice eso precisamente para aprender a moverme con las matrices, vi más cómodo poder usar un bucle en el que según el flag selecciono un vector u otro que una estructura switch con 6 cases.

noter:
También debería funcionar el envío directo del array correspondiente:

irsend.sendRaw(RC[flag],Len,38)

Y funciona... ayer lo probé y me saltaba un error que achaqué a que no era esa la manera. Resulta que definitivamente la matriz no debe ser int, sino unsigned int. Una vez cambiado eso funciona de maravilla.

Muchas gracias a ambos. Un saludo.

Debe ser unsigned int porque eso debe esperar irsend.sendRaw.
La respuesta esta investigando la librería por tu cuenta o comprendiendo el código de error que recibes al compilarlo, con el tiempo lo irás comprendiendo.