Shifting signals to the right

19 ビュー (過去 30 日間)
Curious Mind
Curious Mind 2020 年 6 月 18 日
回答済み: Rutuja 2024 年 12 月 4 日
Hi, I have a matrix, M which is 10*2000 double (10 rows of signals and each signal contains 2000 variables). I want to shift each of the signal in this matrix to the right by say 1. I have a code (below) that can shift a single signal (that is if M contains a single signal, 1*2000). How do I modify this to shift each signal in M at the same time?
The code code for shifting a single signal is:
p = M;
Shift = 1;
Shifted_M = circshift(p,Shift);
In summary, I want a code that can shift each independent row signal in a matrix and output the shifted matrix as Shifted_M. After that I would like to plot this shifted matrix with the original data to visualize it.
Thanks
  1 件のコメント
Tanveer ul haq
Tanveer ul haq 2020 年 6 月 18 日
% consider your matrix is M then:
M=[1 2 3; 4 5 6; 7 8 9];
Shift = 1;
Shifted_M = circshift(M',Shift);
rotated_matrix = Shifted_M'

サインインしてコメントする。

採用された回答

Adam Danz
Adam Danz 2020 年 6 月 18 日
If you'd like to circularly shift the data "A" by "K" positions along the "dim" dimension,
Y = circshift(A,K,dim) (click for more info)
So, you'll need to specify the dimension.
  10 件のコメント
Curious Mind
Curious Mind 2020 年 6 月 19 日
You are correct! I was adding the 1 to the wrong thing. It works now. Also I figured out the plot part. I appreciate your patience and help! Thank you.
Adam Danz
Adam Danz 2020 年 6 月 19 日
Ah, good! Sometimes describing the problem is more difficult than finding the solution. Glad it all worked out!

サインインしてコメントする。

その他の回答 (1 件)

Rutuja
Rutuja 2024 年 12 月 4 日
clc;
clear;
close all;
Fs = 1000;
t = -0.02:1/Fs:0.02;
fc = 100;
modulation_index = 1;
M=[1 2 3; 4 5 6; 7 8 9];
Shift = 1;
Shifted_M = circshift(M',Shift);
rotated_matrix = Shifted_M'
m_t = [t ./ (1 + t.^2)];
c_t = cos(2 * pi * fc * t);
am_signal = (1 + modulation_index * m_t) .* c_t;
subplot(3, 1, 1);
plot(t, m_t);
title('Message Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(3, 1, 2);
plot(t, c_t);
title('Carrier Signal');
xlabel('Time (s)');
ylabel('Amplitude');
subplot(3, 1, 3);
plot(t, am_signal);
title('Amplitude Modulated Signal (100% Modulation Index)');
xlabel('Time (s)');
ylabel('Amplitude');
shift the signal for 5 units

カテゴリ

Help Center および File ExchangeMultirate Signal Processing についてさらに検索

製品


リリース

R2019b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by