我想有关于许多参数的简写形式,我只需要在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。我不明白这将如何取代伪代码中的:
。
function videoParams = fix(k, windowWidth)
videoParams = {k:k + windowWidth/4, k:k + windowWidth};
end
测试电话signal( fix(1,windowWidth){:}, : )
但仍未成功提供错误
() - 索引必须出现在索引表达式的最后。
所以我不确定这样的功能是否可行。
如何为矩阵创建这样的int-string-int输入?
答案 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{:},:)