如何将int-string-int输入作为Matlab矩阵的参数?

时间:2016-03-14 18:32:55

标签: matlab matrix

我想有关于许多参数的简写形式,我只需要在Matlab 2016a中修复它,因为我需要在很多地方使用它们,导致分别管理它们时出现很多错误。 信号尺寸为15x60x3的代码

signal( 1:1 + windowWidth/4, 1:1 + windowWidth,: );

其伪代码

videoParams = 1:1 + windowWidth/4, 1:1 + windowWidth,: ;
signal( videoParams );

你不能把videoParams写成字符串,但我应该把“:”写成字符串,把其他所有内容写成整数。 应该有一些方法来做伪代码。

1:size(signal,3)的输出为3,因此它给出1:3。我不明白这将如何取代伪代码中的:

将horcler的code扩展为函数

function videoParams = fix(k, windowWidth)
videoParams = {k:k + windowWidth/4, k:k + windowWidth}; 
end

测试电话signal( fix(1,windowWidth){:}, : )但仍未成功提供错误

  

() - 索引必须出现在索引表达式的最后。

所以我不确定这样的功能是否可行。

如何为矩阵创建这样的int-string-int输入?

1 个答案:

答案 0 :(得分:1)

这可以通过comma-separated lists

来完成
signal = rand(15,60,3); % Create random data
windowWidth = 2;
videoParams = {1:1+windowWidth/4, 1:1+windowWidth, 1:size(signal,3)};

然后使用以逗号分隔的列表:

signal(videoParams{:})

相当于

signal(1:1+windowWidth/4, 1:1+windowWidth, 1:size(signal,3))

signal(1:1+windowWidth/4, 1:1+windowWidth, :)


冒号运算符本身就是整个维度的简写。但是,它仅适用于直接上下文。以下是无意义的(和无效的代码),因为封闭单元格的第三个元素没有定义的大小:

videoParams = {1:1+windowWidth/4, 1:1+windowWidth, :};

要解决此问题,您当然可以使用:

videoParams = {1:1+windowWidth/4, 1:1+windowWidth};
signal(videoParams{:},:)
相关问题