Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab 根据信号2重新缩放信号1_Matlab - Fatal编程技术网

Matlab 根据信号2重新缩放信号1

Matlab 根据信号2重新缩放信号1,matlab,Matlab,假设我有 A = [0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 ] B = [0.01 0.02 0.01 0.03 0.04 0.05 0.07 0.04 0.03 0.01 0.01 0.03 0.04 0.03 0.02 0.01 0.011 0.02 0.03 0.04 0.05 0.04 0.01] 如何重新缩放A和B的最大数量。 结果应该是 C = [0 0 0 0 0.07 0.07 0.07 0.07 0.07 0 0 0.04

假设我有

A = [0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0 0 0 1 1 1 1 1 ]
B = [0.01 0.02 0.01 0.03 0.04 0.05 0.07 0.04 0.03 0.01 0.01 0.03 0.04 0.03 0.02 0.01 0.011 0.02 0.03 0.04 0.05 0.04 0.01]
如何重新缩放A和B的最大数量。 结果应该是

C = [0 0 0 0 0.07 0.07 0.07 0.07 0.07 0 0 0.04 0.04 0.04 0.04 0 0 0 0.05 0.05 0.05 0.05 0.05]

这是你想做的吗

C = A*max(B)/max(A)

这是你想做的吗

C = A*max(B)/max(A)

您可以像这样使用accumarray:

subs = cumsum([diff(A) > 0, 0]).*A + 1;  %//Similar to bwlabel if you have the image processing toolbox...
maximums = accumarray(subs(:), B(:), [], @max);
maximums(1) = 0;
C = maximums(subs)

您可以像这样使用accumarray:

subs = cumsum([diff(A) > 0, 0]).*A + 1;  %//Similar to bwlabel if you have the image processing toolbox...
maximums = accumarray(subs(:), B(:), [], @max);
maximums(1) = 0;
C = maximums(subs)

+1整洁!我也在使用accumarray开发一个解决方案。我认为你的结果应该进行转置,使其与所需的维度(行向量)相匹配。@danjoro你是指B的值,其中C等于0.07<代码>B(C==0.07)返回
[0.0400 0.0500 0.0700 0.0400 0.0300]
是正确的。只是想测试一下结果是否正确。我有一个问题。准确地说,当我找到答案时,我得到的A的总数与C不一样。例如,如果A=[0 0 0 0 1 1 1 0 1 1 0 0 1 1 1 1 1],我得到的C[[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 5]。我希望总长度相同。我如何才能得到它。@danjoro我得到的
A
C
大小相同,即
isequal(numel(A),numel(C))
返回
true
。我不知道你的
C
在评论中是什么,也不知道你是如何用我的代码得到它的…?是的,大小相同。抱歉我的错误。+1整洁!我也在用
accumarray
开发一个解决方案。不过,我认为你的结果应该进行转置,以便它匹配所需的维度(行向量)@danjoro你是说B的值,其中C等于0.07吗?
B(C==0.07)
返回
[0.0400 0.0500 0.0700 0.0400 0.0300]
是正确的。只是想测试结果是否正确。我有一个问题。准确地说,当我找到答案时,我得到的A的总数与C不一样。例如,如果A=[0 0 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 1],我得到[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1],我想总长度是一样的。我怎样才能得到它。@danjoro我让
A
C
都是一样的大小,即
isequal(numel(A),numel(C))
返回
true
。我不知道你在评论中的
C
是什么,也不知道你是如何使用我的代码得到它的…?是的,大小相同。很抱歉我的错误。