MATLAB 板


LINE

第三个是你的想法直接用两层回圈做的 前两个可以加速不少,提供参考 第一个方法比较tricky的方式把你的想法用成矩阵方式去解会快不少 第二个就只是改成cellfun版本,不用preallocate D % data generation A = randi(255, 128, 128, 20); B = rand(20 ,6); % permute + for-loop tic D = zeros(128, 128, 6); A2 = permute(A, [3,2,1]); for i = 1:128 D(i, :, :) = (B \ squeeze(A2(:, :, i)))'; % 可以不要先permute 直接这样做:D(i, :, :) = (B \ squeeze(A(i, :, :))')'; % 速度上没差多少,看个人写法而定 end toc % Elapsed time is 0.035446 seconds. % cellfun tic tmp_cell = mat2cell(A, ones(size(A, 1), 1), size(A,2), size(A,3)); tmp_cell = cellfun(@squeeze, tmp_cell, 'UniformOutput', false); D2 = cellfun(@(x) B \ x', tmp_cell, 'UniformOutput', false); D2 = permute(cat(3, D2{:}), [3,2,1]); toc % Elapsed time is 0.047776 seconds. % double for-loop tic D3 = zeros(128, 128, 6); for i = 1:128 for j = 1:128 D3(i, j, :) = B \ squeeze(A(i, j, :)); end end toc % Elapsed time is 0.793275 seconds. all(all(all(abs(D - D2) < 1e-4))) % 1 all(all(all(abs(D - D3) < 1e-4))) % 1 %% 精度会不同,allequal会给错 ※ 引述《victor6954 (维克)》之铭言: : 大家好,我是初入matlab世界的新手 : 有个问题想要请教各位 : 我现在有一个 128 X 128 X 20 的三维 A 矩阵, : 以及一个 6 X 20 的二维 B 矩阵, : 想要由这两个矩阵求出三维 D 矩阵, : 其式为 A = B X D。 : 目前尝试取出 A 矩阵的一条 Z 方向转换为 A1 = 20 X 1 的矩阵後, : 用D=B\A, : 可以求出 6 X 1 的矩阵 : http://imgur.com/VIVjA27 : 然而,却无法直接计算三维矩阵 (error : Input arguments must be 2-D.) : 与二维的差别是,A与D矩阵,每个单一值变成128X128的矩阵 : 想请问要如何解出三维 D 矩阵 : http://imgur.com/NTAb6Ln : A矩阵应该要如何进行转换,或是是否有直接计算的语法 : 谢谢各位了 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.248.8.123
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/MATLAB/M.1441713174.A.4F7.html
1F:推 sunev: B的(pseudo) inverse可以先求。 09/08 23:16
2F:推 profyang: 虽然我同意楼上 但pinv(B)*A和B\A未必会有一样的结果 09/08 23:35
3F:→ profyang: 但以这问题先求好pinv(B)然後去扫20*6这两个维度应该比 09/08 23:36
4F:→ profyang: 较快 反正pinv和\都是求最小方差 09/08 23:36
5F:推 sunev: 都是求最小方差的话,答案应该一样啊? 09/08 23:51
6F:→ sunev: t=pinv(B)*reshape(permute(A,[3 1 2]),20,128*128); 09/08 23:52
7F:→ sunev: t=reshape(t,20,128,128); 09/08 23:53
8F:→ sunev: 上一行错了,应为D=reshape(t,6,128,128); 09/08 23:54
10F:→ profyang: 你B本身不是full rank的话就不会一样...虽然它20*6要不 09/09 00:01
11F:→ profyang: 是full rank难度也是颇大啦... 09/09 00:02
12F:→ profyang: 而且楼上都那样打了 跟打t=B\reshape...不是差不多快? 09/09 00:03
13F:推 sunev: 也是 XD 09/09 00:12
14F:→ sunev: 所以 pinv 是最小方差解,"\" 是最多非零元素解,大概是 09/09 00:13
15F:→ sunev: gauss elimination演算法的结果吧 09/09 00:13
16F:推 profyang: 不是耶 是如果B不是full rank的时候(如网页例子) 它的 09/09 00:15
17F:→ profyang: 最小方差解就不只一组 那这两个方法结果会不一样 但都是 09/09 00:15
18F:→ profyang: 最小方差 但是B\A的非0项会最少 至於它此时B\A怎麽算的 09/09 00:16
19F:→ profyang: 我就也不确定了... 09/09 00:16
20F:→ profyang: 上面忘了打 pinv是让x的norm最小(不是方"差"最小喔~) 09/09 00:18
21F:推 sunev: 我把underdetermined 和overdetermined 搞混了 09/09 00:29
22F:→ sunev: overdetermined,二者都会给出唯一最小方差解。 09/09 00:29
23F:→ sunev: underdetermined,解有无限多组,pinv给出norm最小的解 09/09 00:30
24F:→ sunev: "\"给出非零元素最多的解 09/09 00:30
想不到这个问题 可以讨论那麽热烈@@... 辛苦p大跟s大了 ※ 编辑: celestialgod (111.248.8.123), 09/09/2015 00:48:24
25F:推 victor6954: 解出来了!!非常感谢您!!! 09/09 17:36







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Tech_Job站内搜寻

TOP