gr::blocks::multiply_matrix
gr::sync_block
gnuradio/blocks/multiply_matrix.h
class T
std::shared_ptr< multiply_matrix< T > > std::shared_ptr<multiply_matrix<T> > gr::blocks::multiply_matrix< T >::sptr sptr gr::blocks::multiply_matrix::sptr
std::string std::string gr::blocks::multiply_matrix< T >::MSG_PORT_NAME_SET_A MSG_PORT_NAME_SET_A gr::blocks::multiply_matrix::MSG_PORT_NAME_SET_A
sptr static sptr gr::blocks::multiply_matrix< T >::make (std::vector< std::vector< T > > A, gr::block::tag_propagation_policy_t tag_propagation_policy=gr::block::TPP_ALL_TO_ALL) make gr::blocks::multiply_matrix::make std::vector< std::vector< T > > A gr::block::tag_propagation_policy_t tag_propagation_policy gr::block::TPP_ALL_TO_ALL

A

The matrix

tag_propagation_policy

The tag propagation policy. Note this can be any gr::block::tag_propagation_policy_t value. In case of TPP_CUSTOM, tags are only transferred from input $k$ to output $l \iff (A)_{l,k} \neq 0$.

const std::vector< std::vector< T > > & virtual const std::vector< std::vector< T > > & gr::blocks::multiply_matrix< T >::get_A () const =0 get_A gr::blocks::multiply_matrix::get_A

Returns the current matrix.

bool virtual bool gr::blocks::multiply_matrix< T >::set_A (const std::vector< std::vector< T > > &new_A)=0 set_A gr::blocks::multiply_matrix::set_A const std::vector< std::vector< T > > & new_A

Sets the matrix to a new value `new_A`. Returns true if the new matrix was valid and could be changed.

Matrix multiplexer/multiplier: y(k) = A x(k)

This block is similar to gr::blocks::multiply_const_ff, the difference being it can handle several inputs and outputs, and the input-to-output relation can be described by the following mathematical equation: \[ \mathbf{y}(k) = \mathbf{A} \mathbf{x}(k) \, , \, y \in \mathbb{R}^N, \mathbf{x} \in \mathbb{R}^M, A \in \mathbb{R}^{N \times M} \] $\mathbf{y}(k)$ and $\mathbf{x}(i)$ are column-vectors describing the elements on the input port at time step $k$ (this is a sync block with no memory).

Examples for where to use this block include:

- Switch matrices (i.e. switch which ports go where), assuming all ports run on the same rate

- Simulation of static MIMO-Channels (in that case, $\mathbf{A}$ is the channel matrix)

- Summing up streams with variable coefficients

This block features a special tag propagation mode: When setting the tag propagation policy to gr::block::TPP_CUSTOM, a tag is propagated from input $k$ to output $l$, if $(A)_{l,k} \neq 0$.

# Message Ports

This block as one input message port (`set_A`). A message sent to this port will be converted to a std::vector<std::vector<T> >, and then passed on to set_A(). If no conversion is possible, a warning is issued via the logging interface, and A remains unchanged.

Note: It is not possible to change the dimension of the matrix after initialization, as this affects the I/O signature! If a matrix of invalid size is passed to the block, an alert is raised via the logging interface, and A remains unchanged.

gr::basic_block
gr::block
gr::blocks::multiply_matrix< T >
gr::messages::msg_accepter
gr::msg_accepter
gr::sync_block
std::enable_shared_from_this< basic_block >
T
gr::basic_block
d_name
d_symbol_alias
d_symbol_name
d_input_signature
d_output_signature
d_debug_logger
d_logger
msg_queue
d_rpc_vars
d_message_subscribers
gr::block
d_max_output_buffer
d_min_output_buffer
d_pmt_done
d_system_port
gr::blocks::multiply_matrix< T >
MSG_PORT_NAME_SET_A
gr::io_signature
gr::messages::msg_accepter
gr::msg_accepter
gr::sync_block
std::basic_string< Char >
std::deque< T >
elements
std::enable_shared_from_this< basic_block >
std::map< pmt::pmt_t, msg_queue_t, msg_queue_comparator >
keys
elements
std::shared_ptr< T >
ptr
std::shared_ptr< io_signature >
ptr
std::shared_ptr< logger >
std::shared_ptr< pmt_base >
std::string
std::vector< long >
std::vector< rpcbasic_sptr >
elements
p
- gr::blocks::multiply_matrix
  _post
- gr::blocks::multiply_matrix
  active_thread_priority
- gr::blocks::multiply_matrix
  add_item_tag
- gr::blocks::multiply_matrix
  add_item_tag
- gr::blocks::multiply_matrix
  alias
- gr::blocks::multiply_matrix
  alias_pmt
- gr::blocks::multiply_matrix
  alias_set
- gr::blocks::multiply_matrix
  alignment
- gr::blocks::multiply_matrix
  allocate_buffer
- gr::blocks::multiply_matrix
  allocate_detail
- gr::blocks::multiply_matrix
  basic_block
- gr::blocks::multiply_matrix
  basic_block
- gr::blocks::multiply_matrix
  BLACK
- gr::blocks::multiply_matrix
  blkd_input_timer_value
- gr::blocks::multiply_matrix
  block
- gr::blocks::multiply_matrix
  block
- gr::blocks::multiply_matrix
  check_topology
- gr::blocks::multiply_matrix
  clear_finished
- gr::blocks::multiply_matrix
  color
- gr::blocks::multiply_matrix
  consume
- gr::blocks::multiply_matrix
  consume_each
- gr::blocks::multiply_matrix
  d_blkd_input_timer_value
- gr::blocks::multiply_matrix
  d_color
- gr::blocks::multiply_matrix
  d_debug_logger
- gr::blocks::multiply_matrix
  d_input_signature
- gr::blocks::multiply_matrix
  d_logger
- gr::blocks::multiply_matrix
  d_max_output_buffer
- gr::blocks::multiply_matrix
  d_message_subscribers
- gr::blocks::multiply_matrix
  d_min_output_buffer
- gr::blocks::multiply_matrix
  d_name
- gr::blocks::multiply_matrix
  d_output_signature
- gr::blocks::multiply_matrix
  d_pmt_done
- gr::blocks::multiply_matrix
  d_rpc_set
- gr::blocks::multiply_matrix
  d_rpc_vars
- gr::blocks::multiply_matrix
  d_setlock
- gr::blocks::multiply_matrix
  d_symbol_alias
- gr::blocks::multiply_matrix
  d_symbol_name
- gr::blocks::multiply_matrix
  d_symbolic_id
- gr::blocks::multiply_matrix
  d_system_port
- gr::blocks::multiply_matrix
  d_unique_id
- gr::blocks::multiply_matrix
  declare_sample_delay
- gr::blocks::multiply_matrix
  declare_sample_delay
- gr::blocks::multiply_matrix
  delete_head_nowait
- gr::blocks::multiply_matrix
  detail
- gr::blocks::multiply_matrix
  dispatch_msg
- gr::blocks::multiply_matrix
  empty_handled_p
- gr::blocks::multiply_matrix
  empty_handled_p
- gr::blocks::multiply_matrix
  empty_p
- gr::blocks::multiply_matrix
  empty_p
- gr::blocks::multiply_matrix
  enable_update_rate
- gr::blocks::multiply_matrix
  erase_msg
- gr::blocks::multiply_matrix
  expand_minmax_buffer
- gr::blocks::multiply_matrix
  finished
- gr::blocks::multiply_matrix
  fixed_rate
- gr::blocks::multiply_matrix
  fixed_rate_ninput_to_noutput
- gr::blocks::multiply_matrix
  fixed_rate_noutput_to_ninput
- gr::blocks::multiply_matrix
  forecast
- gr::blocks::multiply_matrix
  general_work
- gr::blocks::multiply_matrix
  get_A
- gr::blocks::multiply_matrix
  get_iterator
- gr::blocks::multiply_matrix
  get_msg_map
- gr::blocks::multiply_matrix
  get_tags_in_range
- gr::blocks::multiply_matrix
  get_tags_in_range
- gr::blocks::multiply_matrix
  get_tags_in_window
- gr::blocks::multiply_matrix
  get_tags_in_window
- gr::blocks::multiply_matrix
  GREY
- gr::blocks::multiply_matrix
  has_msg_handler
- gr::blocks::multiply_matrix
  has_msg_port
- gr::blocks::multiply_matrix
  history
- gr::blocks::multiply_matrix
  identifier
- gr::blocks::multiply_matrix
  input_signature
- gr::blocks::multiply_matrix
  insert_tail
- gr::blocks::multiply_matrix
  is_pc_rpc_set
- gr::blocks::multiply_matrix
  is_rpc_set
- gr::blocks::multiply_matrix
  is_set_max_noutput_items
- gr::blocks::multiply_matrix
  is_unaligned
- gr::blocks::multiply_matrix
  log_level
- gr::blocks::multiply_matrix
  make
- gr::blocks::multiply_matrix
  max_noutput_items
- gr::blocks::multiply_matrix
  max_output_buffer
- gr::blocks::multiply_matrix
  message_port_is_hier
- gr::blocks::multiply_matrix
  message_port_is_hier_in
- gr::blocks::multiply_matrix
  message_port_is_hier_out
- gr::blocks::multiply_matrix
  message_port_pub
- gr::blocks::multiply_matrix
  message_port_register_in
- gr::blocks::multiply_matrix
  message_port_register_out
- gr::blocks::multiply_matrix
  message_port_sub
- gr::blocks::multiply_matrix
  message_port_unsub
- gr::blocks::multiply_matrix
  message_ports_in
- gr::blocks::multiply_matrix
  message_ports_out
- gr::blocks::multiply_matrix
  message_subscribers
- gr::blocks::multiply_matrix
  min_noutput_items
- gr::blocks::multiply_matrix
  min_output_buffer
- gr::blocks::multiply_matrix
  mp_relative_rate
- gr::blocks::multiply_matrix
  msg_accepter
- gr::blocks::multiply_matrix
  MSG_PORT_NAME_SET_A
- gr::blocks::multiply_matrix
  msg_queue
- gr::blocks::multiply_matrix
  name
- gr::blocks::multiply_matrix
  nitems_read
- gr::blocks::multiply_matrix
  nitems_written
- gr::blocks::multiply_matrix
  nmsgs
- gr::blocks::multiply_matrix
  no_pc_rpc
- gr::blocks::multiply_matrix
  notify_msg_neighbors
- gr::blocks::multiply_matrix
  output_multiple
- gr::blocks::multiply_matrix
  output_multiple_set
- gr::blocks::multiply_matrix
  output_signature
- gr::blocks::multiply_matrix
  pc_input_buffers_full
- gr::blocks::multiply_matrix
  pc_input_buffers_full
- gr::blocks::multiply_matrix
  pc_input_buffers_full_avg
- gr::blocks::multiply_matrix
  pc_input_buffers_full_avg
- gr::blocks::multiply_matrix
  pc_input_buffers_full_var
- gr::blocks::multiply_matrix
  pc_input_buffers_full_var
- gr::blocks::multiply_matrix
  pc_noutput_items
- gr::blocks::multiply_matrix
  pc_noutput_items_avg
- gr::blocks::multiply_matrix
  pc_noutput_items_var
- gr::blocks::multiply_matrix
  pc_nproduced
- gr::blocks::multiply_matrix
  pc_nproduced_avg
- gr::blocks::multiply_matrix
  pc_nproduced_var
- gr::blocks::multiply_matrix
  pc_output_buffers_full
- gr::blocks::multiply_matrix
  pc_output_buffers_full
- gr::blocks::multiply_matrix
  pc_output_buffers_full_avg
- gr::blocks::multiply_matrix
  pc_output_buffers_full_avg
- gr::blocks::multiply_matrix
  pc_output_buffers_full_var
- gr::blocks::multiply_matrix
  pc_output_buffers_full_var
- gr::blocks::multiply_matrix
  pc_throughput_avg
- gr::blocks::multiply_matrix
  pc_work_time
- gr::blocks::multiply_matrix
  pc_work_time_avg
- gr::blocks::multiply_matrix
  pc_work_time_total
- gr::blocks::multiply_matrix
  pc_work_time_var
- gr::blocks::multiply_matrix
  post
- gr::blocks::multiply_matrix
  processor_affinity
- gr::blocks::multiply_matrix
  produce
- gr::blocks::multiply_matrix
  relative_rate
- gr::blocks::multiply_matrix
  relative_rate_d
- gr::blocks::multiply_matrix
  relative_rate_i
- gr::blocks::multiply_matrix
  remove_item_tag
- gr::blocks::multiply_matrix
  remove_item_tag
- gr::blocks::multiply_matrix
  replace_buffer
- gr::blocks::multiply_matrix
  reset_perf_counters
- gr::blocks::multiply_matrix
  rpc_set
- gr::blocks::multiply_matrix
  sample_delay
- gr::blocks::multiply_matrix
  set_A
- gr::blocks::multiply_matrix
  set_alignment
- gr::blocks::multiply_matrix
  set_blkd_input_timer_value
- gr::blocks::multiply_matrix
  set_block_alias
- gr::blocks::multiply_matrix
  set_color
- gr::blocks::multiply_matrix
  set_detail
- gr::blocks::multiply_matrix
  set_fixed_rate
- gr::blocks::multiply_matrix
  set_history
- gr::blocks::multiply_matrix
  set_input_signature
- gr::blocks::multiply_matrix
  set_inverse_relative_rate
- gr::blocks::multiply_matrix
  set_is_unaligned
- gr::blocks::multiply_matrix
  set_log_level
- gr::blocks::multiply_matrix
  set_max_noutput_items
- gr::blocks::multiply_matrix
  set_max_output_buffer
- gr::blocks::multiply_matrix
  set_max_output_buffer
- gr::blocks::multiply_matrix
  set_min_noutput_items
- gr::blocks::multiply_matrix
  set_min_output_buffer
- gr::blocks::multiply_matrix
  set_min_output_buffer
- gr::blocks::multiply_matrix
  set_msg_handler
- gr::blocks::multiply_matrix
  set_output_multiple
- gr::blocks::multiply_matrix
  set_output_signature
- gr::blocks::multiply_matrix
  set_processor_affinity
- gr::blocks::multiply_matrix
  set_relative_rate
- gr::blocks::multiply_matrix
  set_relative_rate
- gr::blocks::multiply_matrix
  set_tag_propagation_policy
- gr::blocks::multiply_matrix
  set_thread_priority
- gr::blocks::multiply_matrix
  set_unaligned
- gr::blocks::multiply_matrix
  setup_pc_rpc
- gr::blocks::multiply_matrix
  setup_rpc
- gr::blocks::multiply_matrix
  shared_from_base
- gr::blocks::multiply_matrix
  sptr
- gr::blocks::multiply_matrix
  start
- gr::blocks::multiply_matrix
  stop
- gr::blocks::multiply_matrix
  symbol_name
- gr::blocks::multiply_matrix
  symbolic_id
- gr::blocks::multiply_matrix
  sync_block
- gr::blocks::multiply_matrix
  sync_block
- gr::blocks::multiply_matrix
  system_handler
- gr::blocks::multiply_matrix
  tag_propagation_policy
- gr::blocks::multiply_matrix
  tag_propagation_policy_t
- gr::blocks::multiply_matrix
  thread_priority
- gr::blocks::multiply_matrix
  to_basic_block
- gr::blocks::multiply_matrix
  TPP_ALL_TO_ALL
- gr::blocks::multiply_matrix
  TPP_CUSTOM
- gr::blocks::multiply_matrix
  TPP_DONT
- gr::blocks::multiply_matrix
  TPP_ONE_TO_ONE
- gr::blocks::multiply_matrix
  unaligned
- gr::blocks::multiply_matrix
  unique_id
- gr::blocks::multiply_matrix
  unset_max_noutput_items
- gr::blocks::multiply_matrix
  unset_processor_affinity
- gr::blocks::multiply_matrix
  update_rate
- gr::blocks::multiply_matrix
  vcolor
- gr::blocks::multiply_matrix
  WHITE
- gr::blocks::multiply_matrix
  work
- gr::blocks::multiply_matrix
  WORK_CALLED_PRODUCE
- gr::blocks::multiply_matrix
  WORK_DONE
- gr::blocks::multiply_matrix
  work_return_t
- gr::blocks::multiply_matrix
  ~basic_block
- gr::blocks::multiply_matrix
  ~block
- gr::blocks::multiply_matrix
  ~msg_accepter