24小时热门版块排行榜    

查看: 1154  |  回复: 10

l1376777571

新虫 (初入文坛)

[求助] Matlab基础问题求助 已有2人参与

求教各位大神,一个数减一个向量得到一个向量,那么如何让一个矩阵的每一个数都减去这个向量呢?除了for循环
请教各位朋友

发自小木虫Android客户端
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

细节
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

godzilla

金虫 (小有名气)

不清楚你想达到什么效果,建议举例说明。

发自小木虫IOS客户端
2楼2016-11-19 11:48:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

l1376777571

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by godzilla at 2016-11-19 11:48:39
不清楚你想达到什么效果,建议举例说明。

这么说吧
a=magic(5);
b=[1,2,3.4];
for m=1:5
    for n=1:5
         a(m,n)=a(m,n)-b;
    end
end
这样得到的矩阵a的每一个元素都是一个向量,我想问问,有没有什么办法更加快捷,避免for循环,谢谢啦!

发自小木虫Android客户端
细节
3楼2016-11-19 14:25:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

godzilla

金虫 (小有名气)

引用回帖:
3楼: Originally posted by l1376777571 at 2016-11-19 14:25:37
这么说吧
a=magic(5);
b=;
for m=1:5
    for n=1:5
         a(m,n)=a(m,n)-b;
    end
end
这样得到的矩阵a的每一个元素都是一个向量,我想问问,有没有什么办法更加快捷,避免for循环,谢谢啦!
...

>> a=magic(5);
b=[1,2,3,4];
for m=1:5
    for n=1:5
         a(m,n)=a(m,n)-b;
    end
end
带有下标的赋值维度不匹配。
a是5×5的矩阵,a(m,n)=a(m,n)-b运算后a(m,n)变为1×4的向量,运算时会出现错误。

可以试试这个:
kron(a,ones(size(b)))-kron(ones(size(a)),b);
4楼2016-11-19 14:52:17
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

da1234mao

铁虫 (著名写手)

【答案】应助回帖

明显不对啊,这个最后你得到的是多个矩阵哈
5楼2016-11-23 09:12:25
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

累的要死

铁虫 (小有名气)

你理解有误吧!
“一个数减一个向量得到一个向量”,本质是向量中的每个元素都家去一个数
6楼2016-12-13 16:04:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

512095518

专家顾问 (正式写手)

【答案】应助回帖

引用回帖:
3楼: Originally posted by l1376777571 at 2016-11-19 14:25:37
这么说吧
a=magic(5);
b=;
for m=1:5
    for n=1:5
         a(m,n)=a(m,n)-b;
    end
end
这样得到的矩阵a的每一个元素都是一个向量,我想问问,有没有什么办法更加快捷,避免for循环,谢谢啦!
...

a = magic(3);
a = num2cell(a);
b = 1:4;
s = arrayfun(@(x)x{:}-b,a,'UniformOutput',0);
所有的矩阵都只能放在元胞数组里。所以你的例子for循环会报错。
我按照你的要求,用arrayfun函数替代for循环,但是前提是你的a必须要转化成元胞数组。最后输出的s就是你要的结果。
没有极限,只有超越!
7楼2016-12-13 19:27:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangbei_607

新虫 (正式写手)

让这个矩阵y减去这个数乘以全一矩阵,matlab一个命令搞定

发自小木虫Android客户端
8楼2017-02-02 22:19:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangbei_607

新虫 (正式写手)

[ ]=A-B*ones(size(A))

发自小木虫Android客户端
9楼2017-02-02 22:23:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhangbei_607

新虫 (正式写手)

10楼2017-02-02 22:29:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 l1376777571 的主题更新
信息提示
请填处理意见