MATLAB中向量问题
来源:学生作业帮 编辑:大师作文网作业帮 分类:数学作业 时间:2024/11/17 08:04:47
MATLAB中向量问题
已知工作空间中一个数值向量x有长度10n.(10的倍数).并且此工作空间中有4个数:a,b,c,d.请演示如何用a替换x1,x11,x21,...,用b替换x3,x13,x23,...,用c替换x6,x16,x26,...用d替换x10,x20,x30,...
使用不超过4个MATLAB命令.新的向量应该是:(a,x2,b,x4,x5,c,x7,x8,x9,d,a,x12,b,x14,x15,c,x17,.).
(提示:你可能用到index vectors(索引向量)和repmat,但是不能用if,for,while)
已知工作空间中一个数值向量x有长度10n.(10的倍数).并且此工作空间中有4个数:a,b,c,d.请演示如何用a替换x1,x11,x21,...,用b替换x3,x13,x23,...,用c替换x6,x16,x26,...用d替换x10,x20,x30,...
使用不超过4个MATLAB命令.新的向量应该是:(a,x2,b,x4,x5,c,x7,x8,x9,d,a,x12,b,x14,x15,c,x17,.).
(提示:你可能用到index vectors(索引向量)和repmat,但是不能用if,for,while)
matlab对数组元素的索引是非常方便的,正好4句完成:
x( 1 :10 :end ) = a; % 意思就是从1开始,每隔10个数换成a,下同
x( 3 :10 :end ) = b;
x( 6 :10 :end ) = c;
x( 10 :10 :end ) = d;
再问: 谢谢啊 要是用到repmat怎么做啊
再答: 我仔细想了下,用repmat还真的可以,思路就是先构造一个长度为10的数组,把abcd填进去,空的位置用非数字(nan)先填上,然后用repmat把这个数组复制n遍,最后把非数字的地方填上x的值,只需三句就可以搞定: result = repmat( [ a, nan, b, nan, nan, c, nan, nan, nan, d ], 1, n ); nanindex = isnan( result ); % 找出所有非数字的位置 result( nanindex ) = x( nanindex ); % 在这些位置填上x的数
x( 1 :10 :end ) = a; % 意思就是从1开始,每隔10个数换成a,下同
x( 3 :10 :end ) = b;
x( 6 :10 :end ) = c;
x( 10 :10 :end ) = d;
再问: 谢谢啊 要是用到repmat怎么做啊
再答: 我仔细想了下,用repmat还真的可以,思路就是先构造一个长度为10的数组,把abcd填进去,空的位置用非数字(nan)先填上,然后用repmat把这个数组复制n遍,最后把非数字的地方填上x的值,只需三句就可以搞定: result = repmat( [ a, nan, b, nan, nan, c, nan, nan, nan, d ], 1, n ); nanindex = isnan( result ); % 找出所有非数字的位置 result( nanindex ) = x( nanindex ); % 在这些位置填上x的数