adding of signals
    24 ビュー (過去 30 日間)
  
       古いコメントを表示
    
    Sivakumaran Chandrasekaran
      
 2012 年 4 月 26 日
  
    
    
    
    
    コメント済み: Image Analyst
      
      
 2024 年 9 月 1 日
            Hi, When we add two images, we need to maintain same dimension to add. I need to add two wave signals. How to alter their dimensions, so that i can add.
0 件のコメント
採用された回答
  Image Analyst
      
      
 2012 年 4 月 26 日
        The imresize in your Image Processing Toolbox will also work on one dimensional signals.
% Make wave 2 the same length as wave 1.
resizedWave2 = imresize(wave2, length(wave1));
12 件のコメント
  meziane madani
 2017 年 5 月 4 日
				
      編集済み: meziane madani
 2017 年 5 月 4 日
  
			hello; i tried to do what you said, but i have this error :imresize: IM must be a grayscale or RGB image, so i don't think that we can applicate it from a song
  Image Analyst
      
      
 2017 年 5 月 4 日
				It can be a song. Here's proof for two stereo waveforms:
[y1, fs1] = audioread('C:\Users\Public\Music\Sample Music\Sleep Away.mp3'); % Stereo
[y2, fs2] = audioread('C:\Users\Public\Music\Sample Music\Maid with the Flaxen Hair.mp3'); % Stereo
% [y2, fs2] = audioread('guitartune.wav'); % Mono signal
whos y1 fs1
% Name            Size                Bytes  Class     Attributes
% 
%   fs1             1x1                     8  double              
%   y1        8845056x2             141520896  double  
whos y2 fs2
%   Name            Size                Bytes  Class     Attributes
% 
%   fs2             1x1                     8  double              
%   y2        7483391x2             119734256  double     
[rows1, columns1] = size(y1)
[rows2, columns2] = size(y2)
% Make wave 2 the same length as wave 1.  Code if both are stereo.
resizedWave2 = imresize(y1, [rows2, columns2]);
whos resizedWave2 % Proves y1 same size as y2.
It can get a little tricky if one is stereo and one is mono. Is that what you had?
その他の回答 (3 件)
  Richard Brown
      
 2012 年 4 月 26 日
        Also you can use interp1 if you don't have the image processing toolbox
0 件のコメント
  Sk Group
      
 2021 年 2 月 8 日
        MATLAB CODE:
function [y n] = sigadd(x1,n1,x2,n2)
if n1(1)< n2(1)
a = n1(1)
x1 = [zeros(1,abs(n1(1)-n2(1))) x1]
else
a = n2(1)
x1 = [zeros(1,abs(n1(1)-n2(1))) x1]
end
if n1(end)>n2(end)
b = n1(end)
x2 = [x2 zeros(1,abs(n1(end)-n2(end)))]
else
b = n2(end)
x2 = [x2 zeros(1,abs(n1(end)-n2(end)))]
end
n = a:b;
y = x1+x2;
MATLAB CODE:
function [y n] = sigadd_another_method(x1,n1,x2,n2)
n = min(min(n1),min(n2)):max(max(n1),max(n2));
y1 = zeros(1,length(n));
y2 = y1;
y1(find((n>=min(n1))&(n<=max(n1))==1))=x1;
y2(find((n>=min(n2))&(n<=max(n2))==1))=x2;
y = y1+y2;
0 件のコメント
  GULLA
 2024 年 9 月 1 日
        function [y n] = sigadd(x1,n1,x2,n2)
if n1(1)< n2(1)
a = n1(1)
x1 = [zeros(1,abs(n1(1)-n2(1))) x1]
else
a = n2(1)
x1 = [zeros(1,abs(n1(1)-n2(1))) x1]
end
if n1(end)>n2(end)
b = n1(end)
x2 = [x2 zeros(1,abs(n1(end)-n2(end)))]
else
b = n2(end)
x2 = [x2 zeros(1,abs(n1(end)-n2(end)))]
end
n = a:b;
y = x1+x2;
1 件のコメント
  Image Analyst
      
      
 2024 年 9 月 1 日
				You could do that simpler by simply setting the last element to zero to make it match the size of the longer vector.
% Add two vectors together, padding the shorter one 
% with 0's, if needed, to make them the same size.
function [y, n] = sigadd(x1, n1, x2, n2)
if n1 > n2 % x1 is longer so pad x2
    x2(n1) = 0; % Pad out with zeros.
elseif n1 < n2 % x2 is longer so pad x1
    x1(n2) = 0;
end
y = x1 + x2;
n = numel(y);
This assumes both x1 and x2 are vectors (monochrome audio signals, not 2-D stereo audio signals).  See this Tricks and Tips item:
参考
カテゴリ
				Help Center および File Exchange で Simulation, Tuning, and Visualization についてさらに検索
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!






